libfoedus-core
FOEDUS Core Library
|
Definitions of IDs in this package and a few related constant values. More...
Definitions of IDs in this package and a few related constant values.
Definition in file xct_id.hpp.
#include <stdint.h>
#include <iosfwd>
#include "foedus/assert_nd.hpp"
#include "foedus/compiler.hpp"
#include "foedus/cxx11.hpp"
#include "foedus/epoch.hpp"
#include "foedus/fwd.hpp"
#include "foedus/assorted/assorted_func.hpp"
#include "foedus/assorted/atomic_fences.hpp"
#include "foedus/assorted/endianness.hpp"
#include "foedus/assorted/raw_atomics.hpp"
#include "foedus/storage/fwd.hpp"
#include "foedus/thread/fwd.hpp"
#include "foedus/thread/thread_id.hpp"
Go to the source code of this file.
Classes | |
struct | foedus::xct::AcquireAsyncRet |
Return value of acquire_async_rw. More... | |
struct | foedus::xct::McsWwBlockData |
Exclusive-only (WW) MCS lock classes. More... | |
struct | foedus::xct::McsWwBlock |
Pre-allocated MCS block for WW-locks. More... | |
struct | foedus::xct::McsWwLock |
An exclusive-only (WW) MCS lock data structure. More... | |
struct | foedus::xct::McsRwSimpleBlock |
Reader-writer (RW) MCS lock classes. More... | |
union | foedus::xct::McsRwSimpleBlock::Self |
struct | foedus::xct::McsRwSimpleBlock::Self::Components |
struct | foedus::xct::McsRwExtendedBlock |
Pre-allocated MCS block for extended version of RW-locks. More... | |
union | foedus::xct::McsRwExtendedBlock::Field |
struct | foedus::xct::McsRwExtendedBlock::Field::Components |
struct | foedus::xct::McsRwLock |
An MCS reader-writer lock data structure. More... | |
struct | foedus::xct::McsRwAsyncMapping |
struct | foedus::xct::XctId |
Persistent status part of Transaction ID. More... | |
struct | foedus::xct::LockableXctId |
Transaction ID, a 128-bit data to manage record versions and provide locking mechanism. More... | |
struct | foedus::xct::RwLockableXctId |
The MCS reader-writer lock variant of LockableXctId. More... | |
class | foedus::xct::McsOwnerlessLockScope |
struct | foedus::xct::TrackMovedRecordResult |
Result of track_moved_record(). More... | |
Namespaces | |
foedus | |
Root package of FOEDUS (Fast Optimistic Engine for Data Unification Services). | |
foedus::xct | |
Transaction Manager, which provides APIs to begin/commit/abort transactions. | |
Typedefs | |
typedef uintptr_t | foedus::xct::UniversalLockId |
Universally ordered identifier of each lock. More... | |
typedef uint32_t | foedus::xct::LockListPosition |
Index in a lock-list, either RLL or CLL. More... | |
typedef uint32_t | foedus::xct::McsBlockIndex |
Index in thread-local MCS block. More... | |
Enumerations | |
enum | foedus::xct::IsolationLevel { foedus::xct::kDirtyRead, foedus::xct::kSnapshot, foedus::xct::kSerializable } |
Specifies the level of isolation during transaction processing. More... | |
enum | foedus::xct::LockMode { foedus::xct::kNoLock = 0, foedus::xct::kReadLock, foedus::xct::kWriteLock } |
Represents a mode of lock. More... | |
Functions | |
UniversalLockId | foedus::xct::to_universal_lock_id (const memory::GlobalVolatilePageResolver &resolver, uintptr_t lock_ptr) |
Always use this method rather than doing the conversion yourself. More... | |
UniversalLockId | foedus::xct::to_universal_lock_id (uint64_t numa_node, uint64_t local_page_index, uintptr_t lock_ptr) |
If you already have the numa_node, local_page_index, prefer this one. More... | |
UniversalLockId | foedus::xct::xct_id_to_universal_lock_id (const memory::GlobalVolatilePageResolver &resolver, RwLockableXctId *lock) |
UniversalLockId | foedus::xct::rw_lock_to_universal_lock_id (const memory::GlobalVolatilePageResolver &resolver, McsRwLock *lock) |
RwLockableXctId * | foedus::xct::from_universal_lock_id (const memory::GlobalVolatilePageResolver &resolver, const UniversalLockId universal_lock_id) |
Always use this method rather than doing the conversion yourself. More... | |
void | foedus::xct::_dummy_static_size_check__COUNTER__ () |
Variables | |
const UniversalLockId | foedus::xct::kNullUniversalLockId = 0 |
This never points to a valid lock, and also evaluates less than any vaild alocks. More... | |
const LockListPosition | foedus::xct::kLockListPositionInvalid = 0 |
const uint64_t | foedus::xct::kMcsGuestId = -1 |
A special value meaning the lock is held by a non-regular guest that doesn't have a context. More... | |
const uint64_t | foedus::xct::kXctIdDeletedBit = 1ULL << 63 |
const uint64_t | foedus::xct::kXctIdMovedBit = 1ULL << 62 |
const uint64_t | foedus::xct::kXctIdBeingWrittenBit = 1ULL << 61 |
const uint64_t | foedus::xct::kXctIdNextLayerBit = 1ULL << 60 |
const uint64_t | foedus::xct::kXctIdMaskSerializer = 0x0FFFFFFFFFFFFFFFULL |
const uint64_t | foedus::xct::kXctIdMaskEpoch = 0x0FFFFFFF00000000ULL |
const uint64_t | foedus::xct::kXctIdMaskOrdinal = 0x00000000FFFFFFFFULL |
const uint64_t | foedus::xct::kMaxXctOrdinal = (1ULL << 24) - 1U |
Maximum value of in-epoch ordinal. More... | |
const uint64_t | foedus::xct::kLockPageSize = 1 << 12 |
Must be same as storage::kPageSize. More... | |
struct foedus::xct::AcquireAsyncRet |
Return value of acquire_async_rw.
Definition at line 161 of file xct_id.hpp.
Class Members | ||
---|---|---|
bool | acquired_ | whether we immediately acquired the lock or not |
McsBlockIndex | block_index_ |
the queue node we pushed. It is always set whether acquired_ or not, whether simple or extended. However, in simple case when !acquired_, the block is not used and nothing sticks to the queue. We just skip the index next time. |
union foedus::xct::McsRwSimpleBlock::Self |
Definition at line 403 of file xct_id.hpp.
Class Members | ||
---|---|---|
struct Components | components_ | |
uint16_t | data_ |
struct foedus::xct::McsRwSimpleBlock::Self::Components |
Definition at line 405 of file xct_id.hpp.
Class Members | ||
---|---|---|
uint8_t | state_ | |
uint8_t | successor_class_ |
union foedus::xct::McsRwExtendedBlock::Field |
Definition at line 554 of file xct_id.hpp.
Class Members | ||
---|---|---|
struct Components | components_ | |
uint64_t | data_ |
struct foedus::xct::McsRwExtendedBlock::Field::Components |
Definition at line 556 of file xct_id.hpp.
Class Members | ||
---|---|---|
uint32_t | flags_ | |
uint32_t | id_ |