libfoedus-core
FOEDUS Core Library
|
Represents a pointer to a volatile page with modification count for preventing ABA. More...
Represents a pointer to a volatile page with modification count for preventing ABA.
The high 32 bit is for now sparsely used while the low 32 bit is the offset. The high 32 bit so far uses only the first 8 bits:
The offset has to be at least 32 bit (4kb * 2^32=16TB per NUMA node).
Definition at line 194 of file storage_id.hpp.
#include <storage_id.hpp>
Public Member Functions | |
VolatilePagePointer () | |
VolatilePagePointer (uint64_t the_word) | |
VolatilePagePointer (const VolatilePagePointer &other) | |
uint8_t | get_numa_node () const |
memory::PagePoolOffset | get_offset () const |
void | set_offset_unsafe (memory::PagePoolOffset offset) |
This is used only in special places (snapshot composer). More... | |
bool | is_null () const |
void | clear () |
void | set (uint8_t numa_node, memory::PagePoolOffset offset) |
bool | is_equivalent (const VolatilePagePointer &other) const |
bool | operator== (const VolatilePagePointer &other) const |
bool | operator!= (const VolatilePagePointer &other) const |
Public Attributes | |
uint64_t | word |
Friends | |
std::ostream & | operator<< (std::ostream &o, const VolatilePagePointer &v) |
|
inline |
Definition at line 197 of file storage_id.hpp.
|
inlineexplicit |
Definition at line 198 of file storage_id.hpp.
|
inline |
Definition at line 199 of file storage_id.hpp.
|
inline |
Definition at line 211 of file storage_id.hpp.
Referenced by foedus::storage::masstree::MasstreeIntermediatePage::append_minipage_snapshot(), foedus::storage::masstree::MasstreeBorderPage::append_next_layer_snapshot(), foedus::storage::masstree::MasstreeIntermediatePage::append_pointer_snapshot(), foedus::storage::masstree::MasstreeComposer::drop_root_volatile(), foedus::storage::hash::HashStoragePimpl::follow_page_bin_head(), foedus::storage::StorageManagerPimpl::initialize_read_latest_snapshot(), foedus::storage::hash::HashStoragePimpl::locate_bin(), foedus::storage::hash::HashIntermediatePage::release_pages_recursive(), foedus::storage::hash::HashDataPage::release_pages_recursive(), and foedus::storage::masstree::MasstreeBorderPage::replace_next_layer_snapshot().
|
inline |
Definition at line 201 of file storage_id.hpp.
Referenced by foedus::thread::ThreadPimpl::collect_retired_volatile_page(), foedus::storage::describe_volatile_pointer(), foedus::storage::array::ArrayPartitioner::design_partition(), foedus::storage::hash::HashPartitioner::design_partition_task(), foedus::storage::Composer::DropVolatilesArguments::drop(), foedus::storage::sequential::SequentialComposer::drop_volatiles(), foedus::storage::hash::HashStoragePimpl::follow_page_bin_head(), foedus::xct::Xct::on_record_read(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries_next_layer(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries_this_layer_recurse(), foedus::storage::hash::HashIntermediatePage::release_pages_recursive_parallel(), foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive_parallel(), set_offset_unsafe(), and foedus::xct::to_universal_lock_id().
|
inline |
Definition at line 202 of file storage_id.hpp.
Referenced by foedus::storage::assert_valid_volatile_page(), foedus::thread::ThreadPimpl::collect_retired_volatile_page(), foedus::storage::hash::ReserveRecords::create_new_tail_page(), foedus::storage::describe_volatile_pointer(), foedus::storage::Composer::DropVolatilesArguments::drop(), foedus::storage::sequential::SequentialComposer::drop_volatiles(), foedus::storage::hash::HashStoragePimpl::follow_page_bin_head(), foedus::storage::sequential::SequentialStoragePimpl::for_every_page(), foedus::thread::ThreadPimpl::install_a_volatile_page(), is_null(), foedus::xct::Xct::on_record_read(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries_next_layer(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries_this_layer_recurse(), foedus::storage::hash::HashIntermediatePage::release_pages_recursive_parallel(), foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive_parallel(), and foedus::xct::to_universal_lock_id().
|
inline |
Definition at line 215 of file storage_id.hpp.
References word.
Referenced by foedus::storage::masstree::SplitIntermediate::decide_strategy(), foedus::storage::hash::resolve_data_impl(), and foedus::storage::hash::resolve_intermediate_impl().
|
inline |
Definition at line 210 of file storage_id.hpp.
References get_offset().
Referenced by foedus::storage::hash::ReserveRecords::create_new_record_in_tail_page(), foedus::storage::hash::ReserveRecords::create_new_tail_page(), foedus::storage::hash::HashStoragePimpl::debugout_single_thread(), foedus::storage::masstree::MasstreeStoragePimpl::debugout_single_thread(), foedus::storage::hash::HashStoragePimpl::debugout_single_thread_data(), foedus::storage::masstree::MasstreeStoragePimpl::debugout_single_thread_follow(), foedus::storage::hash::HashStoragePimpl::debugout_single_thread_intermediate(), foedus::storage::describe_volatile_pointer(), foedus::storage::array::ArrayPartitioner::design_partition(), foedus::storage::masstree::design_partition_first_parallel_recurse(), foedus::storage::hash::HashPartitioner::design_partition_task(), foedus::storage::Composer::DropVolatilesArguments::drop(), foedus::storage::array::ArrayComposer::drop_volatiles(), foedus::storage::hash::HashComposer::drop_volatiles(), foedus::storage::hash::ReserveRecords::find_and_lock_spacious_tail(), foedus::storage::hash::HashStoragePimpl::follow_page_bin_head(), foedus::thread::ThreadPimpl::follow_page_pointer(), foedus::thread::ThreadPimpl::follow_page_pointers_for_read_batch(), foedus::thread::ThreadPimpl::follow_page_pointers_for_write_batch(), foedus::storage::masstree::grow_case_b_common(), foedus::storage::array::ArrayStoragePimpl::hcc_reset_all_temperature_stat(), foedus::storage::hash::HashStoragePimpl::hcc_reset_all_temperature_stat(), foedus::storage::masstree::MasstreeStoragePimpl::hcc_reset_all_temperature_stat(), foedus::storage::hash::HashStoragePimpl::hcc_reset_all_temperature_stat_data(), foedus::storage::masstree::MasstreeStoragePimpl::hcc_reset_all_temperature_stat_follow(), foedus::storage::array::ArrayStoragePimpl::hcc_reset_all_temperature_stat_intermediate(), foedus::storage::hash::HashStoragePimpl::hcc_reset_all_temperature_stat_intermediate(), foedus::thread::ThreadPimpl::install_a_volatile_page(), foedus::storage::DualPagePointer::is_both_null(), foedus::storage::masstree::MasstreePage::is_foster_major_null(), foedus::storage::masstree::MasstreePage::is_foster_minor_null(), foedus::storage::hash::HashStoragePimpl::locate_record(), foedus::storage::hash::HashStoragePimpl::locate_record_in_snapshot(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries_next_layer(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries_this_layer_recurse(), foedus::thread::ThreadPimpl::place_a_new_volatile_page(), foedus::storage::masstree::MasstreeStoragePimpl::prefetch_pages_follow(), foedus::storage::array::ArrayStoragePimpl::prefetch_pages_recurse(), foedus::storage::hash::ComposedBinsMergedStream::process_a_bin(), foedus::storage::StorageManagerPimpl::reinitialize_for_recovered_snapshot(), foedus::storage::hash::HashIntermediatePage::release_pages_recursive(), foedus::storage::hash::HashDataPage::release_pages_recursive(), foedus::storage::array::ArrayStoragePimpl::release_pages_recursive(), foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive(), foedus::storage::masstree::MasstreeBorderPage::release_pages_recursive(), foedus::storage::hash::HashIntermediatePage::release_pages_recursive_parallel(), foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive_parallel(), foedus::storage::hash::resolve_data_impl(), foedus::storage::hash::resolve_intermediate_impl(), foedus::storage::masstree::GrowFirstLayerRoot::run(), foedus::storage::masstree::GrowNonFirstLayerRoot::run(), foedus::storage::hash::ReserveRecords::search_within_page(), foedus::storage::masstree::MasstreeBorderPage::track_moved_record_next_layer(), foedus::storage::hash::HashStoragePimpl::track_moved_record_search(), foedus::storage::array::ArrayStoragePimpl::verify_single_thread(), foedus::storage::hash::HashStoragePimpl::verify_single_thread(), foedus::storage::hash::HashStoragePimpl::verify_single_thread_data(), and foedus::storage::hash::HashStoragePimpl::verify_single_thread_intermediate().
|
inline |
|
inline |
|
inline |
Definition at line 212 of file storage_id.hpp.
Referenced by foedus::storage::masstree::allocate_new_border_page(), foedus::storage::sequential::SequentialStoragePimpl::append_record(), foedus::storage::combine_volatile_page_pointer(), foedus::thread::ThreadPimpl::follow_page_pointer(), foedus::thread::ThreadPimpl::follow_page_pointers_for_read_batch(), foedus::thread::ThreadPimpl::follow_page_pointers_for_write_batch(), foedus::memory::RoundRobinPageGrabBatch::grab(), foedus::memory::DivvyupPageGrabBatch::grab(), foedus::memory::NumaCoreMemory::grab_free_volatile_page_pointer(), foedus::memory::EngineMemory::grab_one_volatile_page(), foedus::xct::McsMockDataPage::init(), foedus::storage::masstree::MasstreeStoragePimpl::load_empty(), foedus::thread::ThreadPimpl::place_a_new_volatile_page(), foedus::storage::masstree::SplitBorder::run(), foedus::storage::masstree::ReserveRecords::run(), set_offset_unsafe(), and foedus::storage::masstree::SplitIntermediate::split_impl_no_error().
|
inline |
This is used only in special places (snapshot composer).
You should almost always use set(), thus named unsafe.
Definition at line 207 of file storage_id.hpp.
References get_numa_node(), and set().
Referenced by foedus::storage::masstree::MasstreePage::set_foster_major_offset_unsafe().
|
friend |
Definition at line 40 of file storage_id.cpp.
uint64_t foedus::storage::VolatilePagePointer::word |
Definition at line 195 of file storage_id.hpp.
Referenced by foedus::storage::masstree::allocate_new_border_page(), foedus::storage::assert_valid_volatile_page(), foedus::storage::construct_volatile_page_pointer(), foedus::storage::sequential::SequentialStoragePimpl::drop(), foedus::storage::DualPagePointer::DualPagePointer(), foedus::storage::hash::HashStoragePimpl::follow_page_bin_head(), foedus::storage::hash::ComposedBinsMergedStream::init(), foedus::storage::StorageControlBlock::initialize(), foedus::storage::masstree::MasstreePage::initialize_snapshot_common(), foedus::storage::sequential::SequentialPage::initialize_snapshot_page(), foedus::storage::masstree::MasstreePage::initialize_volatile_common(), foedus::storage::sequential::SequentialPage::initialize_volatile_page(), foedus::thread::ThreadPimpl::install_a_volatile_page(), is_equivalent(), foedus::storage::array::ArrayStoragePimpl::load(), foedus::storage::array::ArrayStoragePimpl::load_empty(), foedus::memory::EngineMemory::load_one_volatile_page(), operator!=(), foedus::xct::operator<<(), foedus::storage::operator<<(), operator==(), foedus::storage::DualPagePointer::operator==(), foedus::thread::ThreadPimpl::place_a_new_volatile_page(), foedus::xct::XctManagerPimpl::precommit_xct_verify_pointer_set(), foedus::storage::StorageManagerPimpl::reinitialize_for_recovered_snapshot(), foedus::storage::hash::HashIntermediatePage::release_pages_recursive(), foedus::storage::hash::HashDataPage::release_pages_recursive(), foedus::storage::array::ArrayStoragePimpl::release_pages_recursive(), foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive(), foedus::storage::masstree::MasstreeBorderPage::release_pages_recursive(), foedus::storage::hash::HashIntermediatePage::release_pages_recursive_parallel(), and foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive_parallel().