libfoedus-core
FOEDUS Core Library
|
Implements McsAdaptorConcept over ThreadPimpl. More...
Implements McsAdaptorConcept over ThreadPimpl.
This object is instantiated for every MCS lock invocation in ThreadPimpl, but this object is essentially just the this pointer itself (pimpl_). The compiler will/should eliminate basically everything.
#include <fwd.hpp>
Public Types | |
typedef RW_BLOCK | ThisRwBlock |
Public Member Functions | |
ThreadPimplMcsAdaptor (ThreadPimpl *pimpl) | |
~ThreadPimplMcsAdaptor () | |
xct::McsBlockIndex | issue_new_block () |
void | cancel_new_block (xct::McsBlockIndex the_block) |
xct::McsBlockIndex | get_cur_block () const |
ThreadId | get_my_id () const |
ThreadGroupId | get_my_numa_node () const |
std::atomic< bool > * | me_waiting () |
xct::McsWwBlock * | get_ww_my_block (xct::McsBlockIndex index) |
RW_BLOCK * | get_rw_my_block (xct::McsBlockIndex index) |
std::atomic< bool > * | other_waiting (ThreadId id) |
xct::McsBlockIndex | get_other_cur_block (ThreadId id) |
xct::McsWwBlock * | get_ww_other_block (ThreadId id, xct::McsBlockIndex index) |
RW_BLOCK * | get_rw_other_block (ThreadId id, xct::McsBlockIndex index) |
RW_BLOCK * | dereference_rw_tail_block (uint32_t tail_int) |
xct::McsRwExtendedBlock * | get_rw_other_async_block (ThreadId id, xct::McsRwLock *lock) |
void | add_rw_async_mapping (xct::McsRwLock *lock, xct::McsBlockIndex block_index) |
void | remove_rw_async_mapping (xct::McsRwLock *lock) |
typedef RW_BLOCK foedus::thread::ThreadPimplMcsAdaptor< RW_BLOCK >::ThisRwBlock |
Definition at line 406 of file thread_pimpl.hpp.
|
inlineexplicit |
Definition at line 408 of file thread_pimpl.hpp.
|
inline |
Definition at line 409 of file thread_pimpl.hpp.
|
inline |
Definition at line 481 of file thread_pimpl.hpp.
References ASSERT_ND, foedus::xct::McsRwAsyncMapping::block_index_, foedus::thread::ThreadPimpl::control_block_, foedus::thread::ThreadPimpl::global_volatile_page_resolver_, foedus::xct::kNullUniversalLockId, foedus::xct::McsRwAsyncMapping::lock_id_, foedus::thread::ThreadControlBlock::mcs_rw_async_mapping_current_, foedus::thread::ThreadPimpl::mcs_rw_async_mappings_, and foedus::xct::rw_lock_to_universal_lock_id().
|
inline |
Definition at line 416 of file thread_pimpl.hpp.
References ASSERT_ND, foedus::thread::ThreadPimpl::control_block_, and foedus::thread::ThreadControlBlock::mcs_block_current_.
|
inline |
Definition at line 464 of file thread_pimpl.hpp.
References foedus::thread::ThreadPimplMcsAdaptor< RW_BLOCK >::get_rw_other_block(), foedus::xct::McsRwLock::get_tail_waiter(), foedus::xct::McsRwLock::get_tail_waiter_block(), and foedus::xct::McsRwLock::tail_.
|
inline |
Definition at line 420 of file thread_pimpl.hpp.
References foedus::thread::ThreadPimpl::control_block_, and foedus::thread::ThreadControlBlock::mcs_block_current_.
|
inline |
Definition at line 421 of file thread_pimpl.hpp.
References foedus::thread::ThreadPimpl::id_.
Referenced by foedus::thread::ThreadPimplMcsAdaptor< RW_BLOCK >::get_rw_other_async_block().
|
inline |
Definition at line 422 of file thread_pimpl.hpp.
References foedus::thread::ThreadPimpl::numa_node_.
|
inline |
Definition at line 445 of file thread_pimpl.hpp.
References foedus::thread::ThreadRef::get_control_block(), foedus::thread::ThreadPimpl::get_thread_ref(), and foedus::thread::ThreadControlBlock::mcs_block_current_.
|
inline |
Definition at line 431 of file thread_pimpl.hpp.
References ASSERT_ND, and foedus::thread::ThreadPimpl::get_mcs_rw_my_blocks().
|
inline |
Definition at line 471 of file thread_pimpl.hpp.
References ASSERT_ND, foedus::thread::ThreadRef::get_mcs_rw_async_mapping(), foedus::thread::ThreadPimplMcsAdaptor< RW_BLOCK >::get_my_id(), foedus::thread::ThreadPimplMcsAdaptor< RW_BLOCK >::get_rw_other_block(), foedus::thread::ThreadPimpl::get_thread_ref(), foedus::thread::ThreadPimpl::global_volatile_page_resolver_, foedus::assorted::memory_fence_acquire(), and foedus::xct::rw_lock_to_universal_lock_id().
|
inline |
Definition at line 454 of file thread_pimpl.hpp.
References ASSERT_ND, foedus::thread::ThreadRef::get_control_block(), foedus::thread::ThreadRef::get_mcs_rw_blocks(), foedus::thread::ThreadPimpl::get_thread_ref(), and foedus::thread::ThreadControlBlock::mcs_block_current_.
Referenced by foedus::thread::ThreadPimplMcsAdaptor< RW_BLOCK >::dereference_rw_tail_block(), and foedus::thread::ThreadPimplMcsAdaptor< RW_BLOCK >::get_rw_other_async_block().
|
inline |
Definition at line 425 of file thread_pimpl.hpp.
References ASSERT_ND, and foedus::thread::ThreadPimpl::mcs_ww_blocks_.
|
inline |
Definition at line 449 of file thread_pimpl.hpp.
References ASSERT_ND, foedus::thread::ThreadRef::get_control_block(), foedus::thread::ThreadRef::get_mcs_ww_blocks(), foedus::thread::ThreadPimpl::get_thread_ref(), and foedus::thread::ThreadControlBlock::mcs_block_current_.
|
inline |
Definition at line 411 of file thread_pimpl.hpp.
References ASSERT_ND, foedus::thread::ThreadPimpl::control_block_, and foedus::thread::ThreadControlBlock::mcs_block_current_.
|
inline |
Definition at line 423 of file thread_pimpl.hpp.
References foedus::thread::ThreadPimpl::control_block_, and foedus::thread::ThreadControlBlock::mcs_waiting_.
|
inline |
Definition at line 441 of file thread_pimpl.hpp.
References foedus::thread::ThreadRef::get_control_block(), foedus::thread::ThreadPimpl::get_thread_ref(), and foedus::thread::ThreadControlBlock::mcs_waiting_.
|
inline |
Definition at line 492 of file thread_pimpl.hpp.
References ASSERT_ND, foedus::xct::McsRwAsyncMapping::block_index_, foedus::thread::ThreadPimpl::control_block_, foedus::thread::ThreadPimpl::global_volatile_page_resolver_, foedus::xct::kNullUniversalLockId, foedus::xct::McsRwAsyncMapping::lock_id_, foedus::thread::ThreadControlBlock::mcs_rw_async_mapping_current_, foedus::thread::ThreadPimpl::mcs_rw_async_mappings_, and foedus::xct::rw_lock_to_universal_lock_id().