libfoedus-core
FOEDUS Core Library
|
The MCS reader-writer lock variant of LockableXctId. More...
The MCS reader-writer lock variant of LockableXctId.
Definition at line 1132 of file xct_id.hpp.
#include <xct_id.hpp>
Public Member Functions | |
McsRwLock * | get_key_lock () __attribute__((always_inline)) |
bool | is_keylocked () const __attribute__((always_inline)) |
bool | is_deleted () const __attribute__((always_inline)) |
bool | is_moved () const __attribute__((always_inline)) |
bool | is_next_layer () const __attribute__((always_inline)) |
bool | needs_track_moved () const __attribute__((always_inline)) |
bool | is_being_written () const __attribute__((always_inline)) |
bool | is_hot (thread::Thread *context) const |
void | hotter (thread::Thread *context) const |
void | reset () __attribute__((always_inline)) |
used only while page initialization More... | |
Public Attributes | |
McsRwLock | lock_ |
the first 64bit: Locking part of TID More... | |
XctId | xct_id_ |
the second 64bit: Persistent status part of TID. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &o, const RwLockableXctId &v) |
|
inline |
Definition at line 1139 of file xct_id.hpp.
References lock_.
Referenced by foedus::xct::CurrentLockList::cancel_async_single_lock(), foedus::xct::CurrentLockList::retry_async_single_lock(), foedus::storage::masstree::SplitBorder::run(), foedus::xct::CurrentLockList::try_async_single_lock(), and foedus::xct::CurrentLockList::try_or_acquire_single_lock().
void foedus::xct::RwLockableXctId::hotter | ( | thread::Thread * | context | ) | const |
Definition at line 74 of file xct_id.cpp.
References foedus::storage::Page::get_header(), foedus::thread::Thread::get_lock_rnd(), foedus::storage::PageHeader::hotness_, foedus::assorted::ProbCounter::increment(), and foedus::storage::to_page().
Referenced by foedus::xct::XctManagerPimpl::abort_xct().
|
inline |
Definition at line 1145 of file xct_id.hpp.
References foedus::xct::XctId::is_being_written().
Referenced by foedus::storage::array::ArrayStoragePimpl::verify_single_thread().
|
inline |
Definition at line 1141 of file xct_id.hpp.
References foedus::xct::XctId::is_deleted().
Referenced by foedus::storage::array::ArrayStoragePimpl::verify_single_thread().
bool foedus::xct::RwLockableXctId::is_hot | ( | thread::Thread * | context | ) | const |
Definition at line 70 of file xct_id.cpp.
References foedus::storage::PageHeader::contains_hot_records(), foedus::storage::Page::get_header(), and foedus::storage::to_page().
|
inline |
Definition at line 1140 of file xct_id.hpp.
References foedus::xct::McsRwLock::is_locked().
Referenced by foedus::storage::masstree::MasstreeCommonLogType::apply_record_prepare(), foedus::storage::masstree::MasstreeBorderPage::initialize_layer_root(), foedus::storage::masstree::SplitBorder::lock_existing_records(), foedus::xct::XctManagerPimpl::precommit_xct_apply(), foedus::xct::XctManagerPimpl::precommit_xct_lock(), foedus::storage::masstree::GrowNonFirstLayerRoot::run(), foedus::storage::masstree::SplitBorder::run(), foedus::storage::masstree::MasstreeBorderPage::try_expand_record_in_page_physical(), foedus::storage::array::ArrayStoragePimpl::verify_single_thread(), and foedus::storage::hash::HashStoragePimpl::verify_single_thread_data().
|
inline |
Definition at line 1142 of file xct_id.hpp.
References foedus::xct::XctId::is_moved().
Referenced by foedus::xct::XctManagerPimpl::precommit_xct_lock(), foedus::storage::hash::HashStoragePimpl::track_moved_record(), foedus::storage::masstree::MasstreeBorderPage::track_moved_record(), foedus::storage::masstree::MasstreeBorderPage::try_expand_record_in_page_physical(), and foedus::storage::array::ArrayStoragePimpl::verify_single_thread().
|
inline |
Definition at line 1143 of file xct_id.hpp.
References foedus::xct::XctId::is_next_layer().
Referenced by foedus::xct::XctManagerPimpl::precommit_xct_lock(), foedus::storage::masstree::MasstreeBorderPage::replace_next_layer_snapshot(), foedus::storage::masstree::MasstreeStoragePimpl::track_moved_record(), and foedus::storage::masstree::MasstreeBorderPage::track_moved_record().
|
inline |
Definition at line 1144 of file xct_id.hpp.
References foedus::xct::XctId::needs_track_moved().
Referenced by foedus::xct::XctManagerPimpl::precommit_xct_lock(), foedus::xct::XctManagerPimpl::precommit_xct_lock_track_write(), foedus::xct::XctManagerPimpl::precommit_xct_verify_readonly(), foedus::xct::XctManagerPimpl::precommit_xct_verify_readwrite(), and foedus::xct::XctManagerPimpl::precommit_xct_verify_track_read().
|
inline |
used only while page initialization
Definition at line 1150 of file xct_id.hpp.
References foedus::xct::XctId::data_, and foedus::xct::McsRwLock::reset().
Referenced by foedus::xct::McsMockDataPage::init(), and foedus::storage::hash::HashDataPage::reserve_record().
|
friend |
Definition at line 202 of file xct_id.cpp.
McsRwLock foedus::xct::RwLockableXctId::lock_ |
the first 64bit: Locking part of TID
Definition at line 1134 of file xct_id.hpp.
Referenced by foedus::storage::sequential::SequentialPage::append_record_nosync(), get_key_lock(), foedus::storage::masstree::MasstreeBorderPage::initialize_layer_root(), foedus::xct::operator<<(), foedus::storage::masstree::MasstreeBorderPage::reserve_initially_next_layer(), foedus::storage::masstree::MasstreeBorderPage::reserve_record_space(), foedus::storage::array::ArrayStoragePimpl::verify_single_thread(), and foedus::storage::masstree::MasstreeStoragePimpl::verify_single_thread_border().
XctId foedus::xct::RwLockableXctId::xct_id_ |
the second 64bit: Persistent status part of TID.
Definition at line 1137 of file xct_id.hpp.
Referenced by foedus::xct::XctManagerPimpl::abort_xct(), foedus::storage::masstree::MasstreeBorderPage::append_next_layer_snapshot(), foedus::storage::sequential::SequentialPage::append_record_nosync(), foedus::storage::masstree::MasstreeCommonLogType::apply_record_prepare(), foedus::xct::RetrospectiveLockList::construct(), foedus::storage::hash::HashDataPage::create_record_in_snapshot(), foedus::storage::masstree::MasstreeBorderPage::Slot::does_point_to_layer(), foedus::storage::masstree::MasstreeBorderPage::does_point_to_layer(), foedus::storage::array::ArrayComposer::drop_root_volatile(), foedus::storage::masstree::MasstreeStoragePimpl::follow_layer(), foedus::storage::array::ArrayStoragePimpl::follow_pointers_for_read_batch(), foedus::storage::array::ArrayStoragePimpl::follow_pointers_for_write_batch(), foedus::storage::sequential::SequentialRecordBatch::get_epoch_from_offset(), foedus::storage::sequential::SequentialPage::get_first_record_epoch(), foedus::storage::masstree::MasstreeBorderPage::initialize_layer_root(), foedus::storage::array::ArrayStoragePimpl::locate_record_for_read(), foedus::storage::array::ArrayStoragePimpl::locate_record_for_write(), foedus::storage::array::ArrayStoragePimpl::lookup_for_read(), foedus::storage::array::ArrayStoragePimpl::lookup_for_write(), foedus::xct::Xct::on_record_read(), foedus::xct::operator<<(), foedus::storage::hash::RecordLocation::populate_logical(), foedus::storage::hash::RecordLocation::populate_physical(), foedus::xct::XctManagerPimpl::precommit_xct_apply(), foedus::xct::XctManagerPimpl::precommit_xct_lock(), foedus::xct::XctManagerPimpl::precommit_xct_verify_readonly(), foedus::xct::XctManagerPimpl::precommit_xct_verify_readwrite(), foedus::storage::masstree::MasstreeBorderPage::replace_next_layer_snapshot(), foedus::storage::masstree::MasstreeBorderPage::reserve_initially_next_layer(), foedus::storage::hash::HashDataPage::reserve_record(), foedus::storage::masstree::MasstreeBorderPage::reserve_record_space(), foedus::storage::masstree::SplitBorder::run(), foedus::storage::hash::HashDataPage::search_key_physical(), foedus::storage::masstree::MasstreeBorderPage::track_moved_record_next_layer(), foedus::storage::masstree::MasstreeStoragePimpl::verify_single_thread_border(), and foedus::storage::hash::HashStoragePimpl::verify_single_thread_data().