libfoedus-core
FOEDUS Core Library
|
System On Chip (SOC) and interprocess communication (IPC). More...
System On Chip (SOC) and interprocess communication (IPC).
This module is special in many ways. SOC might be spawned as a local or remote process, so we first instantiate SOCs before everything else with a special manner (partially because linux's tricky process handling semantics).
Classes | |
struct | ChildEngineStatus |
Current status of a child SOC engine. More... | |
struct | GlobalMemoryAnchors |
Just a set of pointers within global_memory_ for ease of use. More... | |
struct | MasterEngineStatus |
Current status of master engine. More... | |
struct | NodeMemoryAnchors |
Same as GlobalMemoryAnchors except this is for node_memories_. More... | |
class | SharedCond |
A conditional variable that can be placed in shared memory and used from multiple processes. More... | |
class | SharedMemoryRepo |
Repository of all shared memory in one FOEDUS instance. More... | |
class | SharedMutex |
A mutex that can be placed in shared memory and used from multiple processes. More... | |
class | SharedMutexScope |
Auto-lock scope object for SharedMutex. More... | |
class | SharedPolling |
A polling-wait mechanism that can be placed in shared memory and used from multiple processes. More... | |
class | SharedRendezvous |
A one-time single-producer multiple-consumer event synchronization in shared memory for multiple processes. More... | |
class | SocManager |
SOC manager, which maintains the shared resource across SOCs and, if this engine is a master engine, manages child SOCs. More... | |
class | SocManagerPimpl |
Pimpl object of SocManager. More... | |
struct | SocOptions |
Set of options for SOC manager. More... | |
struct | ThreadMemoryAnchors |
Part of NodeMemoryAnchors for each thread. More... | |
Typedefs | |
typedef uint16_t | SocId |
Represents an ID of an SOC, or NUMA node. More... | |
typedef uint64_t | Upid |
Universal (or Unique) ID of a process. More... | |
Functions | |
void | ugly_atomic_inc (uint32_t *address) |
void | ugly_atomic_dec (uint32_t *address) |
std::string | get_self_path (uint64_t upid, Eid eid) |
std::string | get_master_path (uint64_t master_upid, Eid master_eid) |
uint64_t | align_4kb (uint64_t value) |
uint64_t | align_2mb (uint64_t value) |
void | ugly_atomic_inc (uint64_t *address) |
uint64_t | get_now_microsec () |
Variables | |
const uint64_t | kDefaultPollingSpins = (1ULL << 10) |
Default value of polling_spins. More... | |
const uint64_t | kDefaultPollingMaxIntervalUs = (1ULL << 15) |
Default value of max_interval_us. More... | |
const uint64_t | kInitialPollingIntervalUs = (1ULL << 8) |
Initial value of sleep interval in us. More... | |
const uint16_t | kMaxSocs = 256U |
Maximum number of SOCs. More... | |
uint64_t foedus::soc::align_2mb | ( | uint64_t | value | ) |
Definition at line 66 of file shared_memory_repo.cpp.
Referenced by foedus::soc::SharedMemoryRepo::allocate_shared_memories().
uint64_t foedus::soc::align_4kb | ( | uint64_t | value | ) |
Definition at line 65 of file shared_memory_repo.cpp.
Referenced by foedus::soc::SharedMemoryRepo::calculate_global_memory_size(), and foedus::soc::SharedMemoryRepo::calculate_node_memory_size().
std::string foedus::soc::get_master_path | ( | uint64_t | master_upid, |
Eid | master_eid | ||
) |
Definition at line 42 of file shared_memory_repo.cpp.
Referenced by foedus::soc::SharedMemoryRepo::attach_shared_memories().
uint64_t foedus::soc::get_now_microsec | ( | ) |
Definition at line 58 of file shared_polling.cpp.
Referenced by foedus::soc::SharedPolling::timedwait().
std::string foedus::soc::get_self_path | ( | uint64_t | upid, |
Eid | eid | ||
) |
Definition at line 37 of file shared_memory_repo.cpp.
Referenced by foedus::soc::SharedMemoryRepo::allocate_shared_memories().
void foedus::soc::ugly_atomic_dec | ( | uint32_t * | address | ) |
Definition at line 86 of file shared_cond.cpp.
Referenced by foedus::soc::SharedCond::broadcast(), foedus::soc::SharedCond::broadcast_nolock(), foedus::soc::SharedCond::signal(), foedus::soc::SharedCond::timedwait(), and foedus::soc::SharedCond::wait().
void foedus::soc::ugly_atomic_inc | ( | uint64_t * | address | ) |
Definition at line 37 of file shared_polling.cpp.
void foedus::soc::ugly_atomic_inc | ( | uint32_t * | address | ) |
Definition at line 83 of file shared_cond.cpp.
Referenced by foedus::soc::SharedCond::broadcast(), foedus::soc::SharedCond::broadcast_nolock(), foedus::soc::SharedPolling::signal(), foedus::soc::SharedCond::signal(), foedus::soc::SharedCond::timedwait(), and foedus::soc::SharedCond::wait().
const uint64_t foedus::soc::kDefaultPollingMaxIntervalUs = (1ULL << 15) |
Default value of max_interval_us.
Definition at line 31 of file shared_polling.hpp.
const uint64_t foedus::soc::kDefaultPollingSpins = (1ULL << 10) |
Default value of polling_spins.
Definition at line 29 of file shared_polling.hpp.
Referenced by foedus::xct::XctManagerPimpl::handle_epoch_chime().
const uint64_t foedus::soc::kInitialPollingIntervalUs = (1ULL << 8) |
Initial value of sleep interval in us.
Definition at line 33 of file shared_polling.hpp.
Referenced by foedus::soc::SharedPolling::timedwait(), and foedus::soc::SharedPolling::wait().