libfoedus-core
FOEDUS Core Library
foedus::log::MetaLogControlBlock Struct Reference

Control block for MetaLogBuffer and MetaLogger. More...

Detailed Description

Control block for MetaLogBuffer and MetaLogger.

Definition at line 38 of file meta_log_buffer.hpp.

#include <meta_log_buffer.hpp>

Collaboration diagram for foedus::log::MetaLogControlBlock:

Public Member Functions

void initialize ()
 
void uninitialize ()
 
bool has_waiting_log () const
 

Public Attributes

char buffer_ [1<< 12]
 The content of current log buffer. More...
 
uint32_t buffer_used_
 
uint64_t oldest_offset_
 Offset from which log entries are not gleaned yet. More...
 
uint64_t durable_offset_
 Offset upto which log entries are fsynced. More...
 
soc::SharedMutex mutex_
 Accesses in MetaLogBuffer are protected with this mutex. More...
 
soc::SharedPolling logger_wakeup_
 the logger sleeps on this variable More...
 

Member Function Documentation

bool foedus::log::MetaLogControlBlock::has_waiting_log ( ) const
inline

Definition at line 50 of file meta_log_buffer.hpp.

References buffer_used_.

50 { return buffer_used_ > 0; }
void foedus::log::MetaLogControlBlock::initialize ( )
inline

Definition at line 39 of file meta_log_buffer.hpp.

References buffer_used_, durable_offset_, foedus::soc::SharedMutex::initialize(), foedus::soc::SharedPolling::initialize(), logger_wakeup_, mutex_, and oldest_offset_.

Referenced by foedus::log::MetaLogger::initialize_once().

39  {
42  buffer_used_ = 0;
43  oldest_offset_ = 0;
44  durable_offset_ = 0;
45  }
soc::SharedPolling logger_wakeup_
the logger sleeps on this variable
void initialize(bool recursive=false)
soc::SharedMutex mutex_
Accesses in MetaLogBuffer are protected with this mutex.
uint64_t durable_offset_
Offset upto which log entries are fsynced.
uint64_t oldest_offset_
Offset from which log entries are not gleaned yet.

Here is the call graph for this function:

Here is the caller graph for this function:

void foedus::log::MetaLogControlBlock::uninitialize ( )
inline

Definition at line 46 of file meta_log_buffer.hpp.

References mutex_, and foedus::soc::SharedMutex::uninitialize().

Referenced by foedus::log::MetaLogger::uninitialize_once().

46  {
48  }
soc::SharedMutex mutex_
Accesses in MetaLogBuffer are protected with this mutex.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

char foedus::log::MetaLogControlBlock::buffer_[1<< 12]

The content of current log buffer.

This must be the first entry to be aligned for direct-IO. We put only one metadata log each time, and metadata log never gets bigger than 4kb, so this is enough.

Definition at line 57 of file meta_log_buffer.hpp.

uint32_t foedus::log::MetaLogControlBlock::buffer_used_

Definition at line 58 of file meta_log_buffer.hpp.

Referenced by has_waiting_log(), initialize(), and foedus::log::operator<<().

uint64_t foedus::log::MetaLogControlBlock::durable_offset_

Offset upto which log entries are fsynced.

Definition at line 62 of file meta_log_buffer.hpp.

Referenced by initialize(), foedus::log::operator<<(), and foedus::savepoint::SavepointManagerPimpl::savepoint_main().

soc::SharedPolling foedus::log::MetaLogControlBlock::logger_wakeup_

the logger sleeps on this variable

Definition at line 70 of file meta_log_buffer.hpp.

Referenced by initialize(), and foedus::log::MetaLogger::uninitialize_once().

soc::SharedMutex foedus::log::MetaLogControlBlock::mutex_

Accesses in MetaLogBuffer are protected with this mutex.

Logger doesn't lock it. Logger just checks buffer_/buffer_used_. Make sure you write buffer_ first, then buffer_used_ after fence.

Definition at line 68 of file meta_log_buffer.hpp.

Referenced by initialize(), and uninitialize().

uint64_t foedus::log::MetaLogControlBlock::oldest_offset_

Offset from which log entries are not gleaned yet.

Definition at line 60 of file meta_log_buffer.hpp.

Referenced by initialize(), foedus::log::operator<<(), and foedus::savepoint::SavepointManagerPimpl::savepoint_main().


The documentation for this struct was generated from the following file: