CUBRID Engine
latest
|
#include <lockfree_hashmap.hpp>
Classes | |
struct | freelist_node_data |
class | iterator |
Public Member Functions | |
hashmap () | |
~hashmap () | |
void | init (tran::system &transys, size_t hash_size, size_t freelist_block_size, size_t freelist_block_count, lf_entry_descriptor &edesc) |
void | destroy () |
T * | find (tran::index tran_index, Key &key) |
bool | find_or_insert (tran::index tran_index, Key &key, T *&entry) |
bool | insert (tran::index tran_index, Key &key, T *&entry) |
bool | insert_given (tran::index tran_index, Key &key, T *&entry) |
bool | erase (tran::index tran_index, Key &key) |
bool | erase_locked (tran::index tran_index, Key &key, T *&locked_entry) |
void | unlock (tran::index tran_index, T *&entry) |
void | clear (tran::index tran_index) |
T * | freelist_claim (tran::index tran_index) |
void | freelist_retire (tran::index tran_index, T *&entry) |
void | start_tran (tran::index tran_index) |
void | end_tran (tran::index tran_index) |
template<typename D > | |
void | dump_stats (std::ostream &os) const |
void | activate_stats () |
void | deactivate_stats () |
size_t | get_size () const |
size_t | get_element_count () const |
Private Types | |
using | address_type = address_marker< T > |
using | freelist_type = freelist< freelist_node_data > |
using | free_node_type = typename freelist_type::free_node |
using | ct_stat_type = cubmonitor::atomic_counter_timer_stat |
Private Member Functions | |
void *volatile * | get_ref (T *p, size_t offset) |
void * | get_ptr (T *p, size_t offset) |
void * | get_ptr_deref (T *p, size_t offset) |
void * | get_keyp (T *p) |
T * | get_nextp (T *p) |
T *& | get_nextp_ref (T *p) |
pthread_mutex_t * | get_pthread_mutexp (T *p) |
free_node_type * | to_free_node (T *p) |
T * | from_free_node (free_node_type *fn) |
void | save_temporary (tran::descriptor &tdes, T *&p) |
T * | claim_temporary (tran::descriptor &tdes) |
T * | freelist_claim (tran::descriptor &tdes) |
void | freelist_retire (tran::descriptor &tdes, T *&p) |
void | safeguard_use_mutex_or_tran_started (const tran::descriptor &tdes, const pthread_mutex_t *mtx) |
void | start_tran_if_not_started (tran::descriptor &tdes) |
void | start_tran_force (tran::descriptor &tdes) |
void | promote_tran_force (tran::descriptor &tdes) |
void | end_tran_if_started (tran::descriptor &tdes) |
void | end_tran_force (tran::descriptor &tdes) |
void | lock_entry (T &tolock) |
void | unlock_entry (T &tounlock) |
void | lock_entry_mutex (T &tolock, pthread_mutex_t *&mtx) |
void | unlock_entry_mutex_if_locked (pthread_mutex_t *&mtx) |
void | unlock_entry_mutex_force (pthread_mutex_t *&mtx) |
size_t | get_hash (Key &key) const |
T *& | get_bucket (Key &key) |
tran::descriptor & | get_tran_descriptor (tran::index tran_index) |
void | list_find (tran::index tran_index, T *list_head, Key &key, int *behavior_flags, T *&found_node) |
bool | list_insert_internal (tran::index tran_index, T *&list_head, Key &key, int *behavior_flags, T *&found_node) |
bool | list_delete (tran::index tran_index, T *&list_head, Key &key, T *locked_entry, int *behavior_flags) |
bool | hash_insert_internal (tran::index tran_index, Key &key, int bflags, T *&entry) |
bool | hash_erase_internal (tran::index tran_index, Key &key, int bflags, T *locked_entry) |
template<typename D > | |
void | dump_stat (std::ostream &os, const char *name, const ct_stat_type &ct_stat) const |
Static Private Member Functions | |
static constexpr std::ptrdiff_t | free_node_offset_of_data (free_node_type fn) |
Definition at line 42 of file lockfree_hashmap.hpp.
|
private |
Definition at line 80 of file lockfree_hashmap.hpp.
|
private |
Definition at line 113 of file lockfree_hashmap.hpp.
|
private |
Definition at line 100 of file lockfree_hashmap.hpp.
|
private |
Definition at line 99 of file lockfree_hashmap.hpp.
lockfree::hashmap< Key, T >::hashmap | ( | ) |
Definition at line 203 of file lockfree_hashmap.hpp.
lockfree::hashmap< Key, T >::~hashmap | ( | ) |
Definition at line 223 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::destroy().
void lockfree::hashmap< Key, T >::activate_stats | ( | ) |
Definition at line 624 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::m_active_stats.
|
private |
Definition at line 564 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::from_free_node(), and lockfree::tran::descriptor::pull_saved_reclaimable().
void lockfree::hashmap< Key, T >::clear | ( | tran::index | tran_index | ) |
Definition at line 377 of file lockfree_hashmap.hpp.
References assert, lockfree::hashmap< Key, T >::freelist_retire(), lockfree::hashmap< Key, T >::get_nextp_ref(), lockfree::hashmap< Key, T >::get_tran_descriptor(), i, lockfree::hashmap< Key, T >::lock_entry_mutex(), lockfree::hashmap< Key, T >::m_active_stats, lockfree::hashmap< Key, T >::m_backbuffer, lockfree::hashmap< Key, T >::m_backbuffer_mutex, lockfree::hashmap< Key, T >::m_buckets, lockfree::hashmap< Key, T >::m_edesc, lockfree::hashmap< Key, T >::m_size, lockfree::hashmap< Key, T >::m_stat_clear, NULL, lockfree::address_marker< T >::set_adress_mark(), lockfree::address_marker< T >::strip_address_mark(), lockfree::hashmap< Key, T >::unlock_entry_mutex_force(), and lf_entry_descriptor::using_mutex.
void lockfree::hashmap< Key, T >::deactivate_stats | ( | ) |
Definition at line 631 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::m_active_stats.
void lockfree::hashmap< Key, T >::destroy | ( | ) |
Definition at line 230 of file lockfree_hashmap.hpp.
References assert, lockfree::hashmap< Key, T >::freelist_retire(), lockfree::hashmap< Key, T >::get_nextp(), lockfree::hashmap< Key, T >::get_tran_descriptor(), i, lockfree::address_marker< T >::is_address_marked(), lockfree::hashmap< Key, T >::m_backbuffer, lockfree::hashmap< Key, T >::m_buckets, lockfree::hashmap< Key, T >::m_freelist, lockfree::hashmap< Key, T >::m_size, and NULL.
Referenced by lockfree::hashmap< Key, T >::~hashmap().
|
private |
Definition at line 593 of file lockfree_hashmap.hpp.
References cubregex::count(), cubmonitor::counter_timer_statistic< A, T >::get_count(), and cubmonitor::counter_timer_statistic< A, T >::get_time().
void lockfree::hashmap< Key, T >::dump_stats | ( | std::ostream & | os | ) | const |
Definition at line 607 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::m_stat_claim, lockfree::hashmap< Key, T >::m_stat_clear, lockfree::hashmap< Key, T >::m_stat_erase, lockfree::hashmap< Key, T >::m_stat_find, lockfree::hashmap< Key, T >::m_stat_insert, lockfree::hashmap< Key, T >::m_stat_iterates, lockfree::hashmap< Key, T >::m_stat_retire, and lockfree::hashmap< Key, T >::m_stat_unlock.
void lockfree::hashmap< Key, T >::end_tran | ( | tran::index | tran_index | ) |
Definition at line 585 of file lockfree_hashmap.hpp.
References lockfree::tran::descriptor::end_tran(), and lockfree::hashmap< Key, T >::get_tran_descriptor().
|
private |
Definition at line 743 of file lockfree_hashmap.hpp.
References assert, lockfree::tran::descriptor::end_tran(), and lockfree::tran::descriptor::is_tran_started().
Referenced by lockfree::hashmap< Key, T >::list_delete(), and lockfree::hashmap< Key, T >::list_insert_internal().
|
private |
Definition at line 733 of file lockfree_hashmap.hpp.
References lockfree::tran::descriptor::end_tran(), and lockfree::tran::descriptor::is_tran_started().
Referenced by lockfree::hashmap< Key, T >::list_insert_internal().
bool lockfree::hashmap< Key, T >::erase | ( | tran::index | tran_index, |
Key & | key | ||
) |
Definition at line 324 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::hash_erase_internal(), LF_LIST_BF_LOCK_ON_DELETE, LF_LIST_BF_RETURN_ON_RESTART, and NULL.
bool lockfree::hashmap< Key, T >::erase_locked | ( | tran::index | tran_index, |
Key & | key, | ||
T *& | locked_entry | ||
) |
Definition at line 344 of file lockfree_hashmap.hpp.
References assert, lockfree::hashmap< Key, T >::hash_erase_internal(), LF_LIST_BF_RETURN_ON_RESTART, lockfree::hashmap< Key, T >::m_edesc, NULL, success(), and lf_entry_descriptor::using_mutex.
T * lockfree::hashmap< Key, T >::find | ( | tran::index | tran_index, |
Key & | key | ||
) |
bool lockfree::hashmap< Key, T >::find_or_insert | ( | tran::index | tran_index, |
Key & | key, | ||
T *& | entry | ||
) |
Definition at line 300 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::hash_insert_internal(), LF_LIST_BF_FIND_OR_INSERT, and LF_LIST_BF_RETURN_ON_RESTART.
|
inlinestaticprivate |
Definition at line 166 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::to_free_node().
T * lockfree::hashmap< Key, T >::freelist_claim | ( | tran::index | tran_index | ) |
Definition at line 648 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_tran_descriptor().
Referenced by lockfree::hashmap< Key, T >::list_insert_internal().
|
private |
Definition at line 655 of file lockfree_hashmap.hpp.
References assert, lockfree::freelist< T >::claim(), lockfree::tran::descriptor::end_tran(), lf_entry_descriptor::f_init, lockfree::hashmap< Key, T >::from_free_node(), lockfree::hashmap< Key, T >::get_nextp_ref(), lockfree::tran::descriptor::is_tran_started(), lockfree::hashmap< Key, T >::m_active_stats, lockfree::hashmap< Key, T >::m_edesc, lockfree::hashmap< Key, T >::m_freelist, lockfree::hashmap< Key, T >::m_stat_claim, NULL, lockfree::tran::descriptor::pull_saved_reclaimable(), and lockfree::tran::descriptor::start_tran().
void lockfree::hashmap< Key, T >::freelist_retire | ( | tran::index | tran_index, |
T *& | entry | ||
) |
Definition at line 571 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_tran_descriptor().
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::destroy(), lockfree::hashmap< Key, T >::list_delete(), and lockfree::hashmap< Key, T >::list_insert_internal().
|
private |
|
private |
Definition at line 536 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::claim_temporary(), and lockfree::hashmap< Key, T >::freelist_claim().
|
private |
Definition at line 469 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_hash(), and lockfree::hashmap< Key, T >::m_buckets.
Referenced by lockfree::hashmap< Key, T >::find(), lockfree::hashmap< Key, T >::hash_erase_internal(), and lockfree::hashmap< Key, T >::hash_insert_internal().
size_t lockfree::hashmap< Key, T >::get_element_count | ( | ) | const |
Definition at line 455 of file lockfree_hashmap.hpp.
References lockfree::freelist< T >::get_claimed_count(), and lockfree::hashmap< Key, T >::m_freelist.
|
private |
Definition at line 462 of file lockfree_hashmap.hpp.
References lf_entry_descriptor::f_hash, lockfree::hashmap< Key, T >::m_edesc, and lockfree::hashmap< Key, T >::m_size.
Referenced by lockfree::hashmap< Key, T >::get_bucket().
|
private |
Definition at line 508 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_ptr(), lockfree::hashmap< Key, T >::m_edesc, and lf_entry_descriptor::of_key.
Referenced by lockfree::hashmap< Key, T >::list_delete(), lockfree::hashmap< Key, T >::list_find(), and lockfree::hashmap< Key, T >::list_insert_internal().
|
private |
Definition at line 515 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_ptr_deref(), lockfree::hashmap< Key, T >::m_edesc, and lf_entry_descriptor::of_next.
Referenced by lockfree::hashmap< Key, T >::destroy().
|
private |
Definition at line 522 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_ref(), lockfree::hashmap< Key, T >::m_edesc, and lf_entry_descriptor::of_next.
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::freelist_claim(), lockfree::hashmap< Key, T >::iterator::iterate(), lockfree::hashmap< Key, T >::list_delete(), lockfree::hashmap< Key, T >::list_find(), and lockfree::hashmap< Key, T >::list_insert_internal().
|
private |
Definition at line 529 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_ptr(), lockfree::hashmap< Key, T >::m_edesc, and lf_entry_descriptor::of_mutex.
Referenced by lockfree::hashmap< Key, T >::list_delete(), lockfree::hashmap< Key, T >::lock_entry_mutex(), and lockfree::hashmap< Key, T >::unlock_entry().
|
private |
Definition at line 483 of file lockfree_hashmap.hpp.
References assert, lockfree::address_marker< T >::is_address_marked(), and NULL.
Referenced by lockfree::hashmap< Key, T >::get_keyp(), and lockfree::hashmap< Key, T >::get_pthread_mutexp().
|
private |
Definition at line 501 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_ref().
Referenced by lockfree::hashmap< Key, T >::get_nextp().
|
private |
Definition at line 492 of file lockfree_hashmap.hpp.
References assert, lockfree::address_marker< T >::is_address_marked(), and NULL.
Referenced by lockfree::hashmap< Key, T >::get_nextp_ref(), and lockfree::hashmap< Key, T >::get_ptr_deref().
size_t lockfree::hashmap< Key, T >::get_size | ( | void | ) | const |
Definition at line 448 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::m_size.
|
private |
Definition at line 476 of file lockfree_hashmap.hpp.
References lockfree::tran::table::get_descriptor(), lockfree::freelist< T >::get_transaction_table(), and lockfree::hashmap< Key, T >::m_freelist.
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::destroy(), lockfree::hashmap< Key, T >::end_tran(), lockfree::hashmap< Key, T >::freelist_claim(), lockfree::hashmap< Key, T >::freelist_retire(), lockfree::hashmap< Key, T >::list_delete(), lockfree::hashmap< Key, T >::list_find(), lockfree::hashmap< Key, T >::list_insert_internal(), lockfree::hashmap< Key, T >::start_tran(), and lockfree::hashmap< Key, T >::unlock().
|
private |
Definition at line 1297 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_bucket(), LF_LIST_BR_RESTARTED, lockfree::hashmap< Key, T >::list_delete(), lockfree::hashmap< Key, T >::m_active_stats, and lockfree::hashmap< Key, T >::m_stat_erase.
Referenced by lockfree::hashmap< Key, T >::erase(), and lockfree::hashmap< Key, T >::erase_locked().
|
private |
Definition at line 1261 of file lockfree_hashmap.hpp.
References assert, lockfree::hashmap< Key, T >::get_bucket(), LF_LIST_BF_INSERT_GIVEN, LF_LIST_BF_IS_FLAG_SET, LF_LIST_BR_RESTARTED, lockfree::hashmap< Key, T >::list_insert_internal(), lockfree::hashmap< Key, T >::m_active_stats, lockfree::hashmap< Key, T >::m_stat_insert, and NULL.
Referenced by lockfree::hashmap< Key, T >::find_or_insert(), lockfree::hashmap< Key, T >::insert(), and lockfree::hashmap< Key, T >::insert_given().
void lockfree::hashmap< Key, T >::init | ( | tran::system & | transys, |
size_t | hash_size, | ||
size_t | freelist_block_size, | ||
size_t | freelist_block_count, | ||
lf_entry_descriptor & | edesc | ||
) |
Definition at line 260 of file lockfree_hashmap.hpp.
References i, lockfree::hashmap< Key, T >::m_backbuffer, lockfree::hashmap< Key, T >::m_buckets, lockfree::hashmap< Key, T >::m_edesc, lockfree::hashmap< Key, T >::m_freelist, lockfree::hashmap< Key, T >::m_size, NULL, and lockfree::address_marker< T >::set_adress_mark().
bool lockfree::hashmap< Key, T >::insert | ( | tran::index | tran_index, |
Key & | key, | ||
T *& | entry | ||
) |
Definition at line 307 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::hash_insert_internal(), and LF_LIST_BF_RETURN_ON_RESTART.
bool lockfree::hashmap< Key, T >::insert_given | ( | tran::index | tran_index, |
Key & | key, | ||
T *& | entry | ||
) |
Definition at line 314 of file lockfree_hashmap.hpp.
References assert, lockfree::hashmap< Key, T >::hash_insert_internal(), LF_LIST_BF_FIND_OR_INSERT, LF_LIST_BF_INSERT_GIVEN, LF_LIST_BF_RETURN_ON_RESTART, and NULL.
|
private |
Definition at line 1103 of file lockfree_hashmap.hpp.
References assert, lockfree::address_marker< T >::atomic_strip_address_mark(), lockfree::hashmap< Key, T >::end_tran_force(), lf_entry_descriptor::f_key_cmp, lockfree::hashmap< Key, T >::freelist_retire(), lockfree::hashmap< Key, T >::get_keyp(), lockfree::hashmap< Key, T >::get_nextp_ref(), lockfree::hashmap< Key, T >::get_pthread_mutexp(), lockfree::hashmap< Key, T >::get_tran_descriptor(), LF_LIST_BF_IS_FLAG_SET, LF_LIST_BF_LOCK_ON_DELETE, LF_LIST_BF_RETURN_ON_RESTART, LF_LIST_BR_RESTARTED, lockfree::hashmap< Key, T >::lock_entry_mutex(), lockfree::hashmap< Key, T >::m_edesc, NULL, lockfree::hashmap< Key, T >::promote_tran_force(), lockfree::address_marker< T >::set_adress_mark(), lockfree::hashmap< Key, T >::start_tran_force(), lockfree::address_marker< T >::strip_address_mark(), lockfree::hashmap< Key, T >::unlock_entry_mutex_force(), and lf_entry_descriptor::using_mutex.
Referenced by lockfree::hashmap< Key, T >::hash_erase_internal().
|
private |
Definition at line 805 of file lockfree_hashmap.hpp.
References lockfree::address_marker< T >::atomic_strip_address_mark(), lockfree::tran::descriptor::end_tran(), lf_entry_descriptor::f_key_cmp, lockfree::hashmap< Key, T >::get_keyp(), lockfree::hashmap< Key, T >::get_nextp_ref(), lockfree::hashmap< Key, T >::get_tran_descriptor(), lockfree::address_marker< T >::is_address_marked(), LF_LIST_BF_RETURN_ON_RESTART, LF_LIST_BR_RESTARTED, lockfree::hashmap< Key, T >::lock_entry_mutex(), lockfree::hashmap< Key, T >::m_edesc, NULL, lockfree::tran::descriptor::start_tran(), lockfree::address_marker< T >::strip_address_mark(), lockfree::hashmap< Key, T >::unlock_entry_mutex_force(), and lf_entry_descriptor::using_mutex.
Referenced by lockfree::hashmap< Key, T >::find().
|
private |
Definition at line 891 of file lockfree_hashmap.hpp.
References assert, lockfree::address_marker< T >::atomic_strip_address_mark(), lockfree::hashmap< Key, T >::end_tran_force(), lockfree::hashmap< Key, T >::end_tran_if_started(), lf_entry_descriptor::f_duplicate, lf_entry_descriptor::f_key_cmp, lf_entry_descriptor::f_key_copy, lockfree::hashmap< Key, T >::freelist_claim(), lockfree::hashmap< Key, T >::freelist_retire(), lockfree::hashmap< Key, T >::get_keyp(), lockfree::hashmap< Key, T >::get_nextp_ref(), lockfree::hashmap< Key, T >::get_tran_descriptor(), lockfree::address_marker< T >::is_address_marked(), lockfree::tran::descriptor::is_tran_started(), LF_LIST_BF_FIND_OR_INSERT, LF_LIST_BF_INSERT_GIVEN, LF_LIST_BF_IS_FLAG_SET, LF_LIST_BF_RESTART_ON_DUPLICATE, LF_LIST_BF_RETURN_ON_RESTART, LF_LIST_BR_RESTARTED, LF_LIST_BR_SET_FLAG, lockfree::hashmap< Key, T >::lock_entry_mutex(), lockfree::hashmap< Key, T >::m_edesc, NO_ERROR, NULL, lockfree::hashmap< Key, T >::safeguard_use_mutex_or_tran_started(), lockfree::hashmap< Key, T >::save_temporary(), lockfree::hashmap< Key, T >::start_tran_force(), lockfree::address_marker< T >::strip_address_mark(), lockfree::hashmap< Key, T >::unlock_entry_mutex_force(), lockfree::hashmap< Key, T >::unlock_entry_mutex_if_locked(), and lf_entry_descriptor::using_mutex.
Referenced by lockfree::hashmap< Key, T >::hash_insert_internal().
|
private |
Definition at line 751 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::lock_entry_mutex(), and NULL.
Referenced by lockfree::hashmap< Key, T >::iterator::iterate().
|
private |
Definition at line 767 of file lockfree_hashmap.hpp.
References assert, lockfree::hashmap< Key, T >::get_pthread_mutexp(), lockfree::hashmap< Key, T >::m_edesc, NULL, pthread_mutex_lock, and lf_entry_descriptor::using_mutex.
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::list_delete(), lockfree::hashmap< Key, T >::list_find(), lockfree::hashmap< Key, T >::list_insert_internal(), and lockfree::hashmap< Key, T >::lock_entry().
|
private |
Definition at line 725 of file lockfree_hashmap.hpp.
References assert, lockfree::tran::descriptor::is_tran_started(), and lockfree::tran::descriptor::start_tran_and_increment_id().
Referenced by lockfree::hashmap< Key, T >::list_delete().
|
private |
Definition at line 697 of file lockfree_hashmap.hpp.
References assert, lockfree::tran::descriptor::is_tran_started(), lockfree::hashmap< Key, T >::m_edesc, NULL, and lf_entry_descriptor::using_mutex.
Referenced by lockfree::hashmap< Key, T >::list_insert_internal().
|
private |
Definition at line 555 of file lockfree_hashmap.hpp.
References NULL, lockfree::tran::descriptor::save_reclaimable(), and lockfree::hashmap< Key, T >::to_free_node().
Referenced by lockfree::hashmap< Key, T >::list_insert_internal().
void lockfree::hashmap< Key, T >::start_tran | ( | tran::index | tran_index | ) |
Definition at line 578 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_tran_descriptor(), and lockfree::tran::descriptor::start_tran().
|
private |
Definition at line 717 of file lockfree_hashmap.hpp.
References assert, lockfree::tran::descriptor::is_tran_started(), and lockfree::tran::descriptor::start_tran().
Referenced by lockfree::hashmap< Key, T >::list_delete(), and lockfree::hashmap< Key, T >::list_insert_internal().
|
private |
Definition at line 710 of file lockfree_hashmap.hpp.
References lockfree::tran::descriptor::start_tran().
|
private |
Definition at line 544 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::free_node_offset_of_data().
Referenced by lockfree::hashmap< Key, T >::freelist_retire(), and lockfree::hashmap< Key, T >::save_temporary().
void lockfree::hashmap< Key, T >::unlock | ( | tran::index | tran_index, |
T *& | entry | ||
) |
Definition at line 359 of file lockfree_hashmap.hpp.
References assert, lockfree::tran::descriptor::end_tran(), lockfree::hashmap< Key, T >::get_tran_descriptor(), lockfree::hashmap< Key, T >::m_active_stats, lockfree::hashmap< Key, T >::m_edesc, lockfree::hashmap< Key, T >::m_stat_unlock, NULL, lockfree::hashmap< Key, T >::unlock_entry(), and lf_entry_descriptor::using_mutex.
|
private |
Definition at line 759 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::get_pthread_mutexp(), and lockfree::hashmap< Key, T >::unlock_entry_mutex_force().
Referenced by lockfree::hashmap< Key, T >::iterator::iterate(), and lockfree::hashmap< Key, T >::unlock().
|
private |
Definition at line 794 of file lockfree_hashmap.hpp.
References assert, lockfree::hashmap< Key, T >::m_edesc, NULL, pthread_mutex_unlock, and lf_entry_descriptor::using_mutex.
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::list_delete(), lockfree::hashmap< Key, T >::list_find(), lockfree::hashmap< Key, T >::list_insert_internal(), and lockfree::hashmap< Key, T >::unlock_entry().
|
private |
Definition at line 781 of file lockfree_hashmap.hpp.
References lockfree::hashmap< Key, T >::m_edesc, NULL, pthread_mutex_unlock, and lf_entry_descriptor::using_mutex.
Referenced by lockfree::hashmap< Key, T >::list_insert_internal().
|
private |
Definition at line 122 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::activate_stats(), lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::deactivate_stats(), lockfree::hashmap< Key, T >::find(), lockfree::hashmap< Key, T >::freelist_claim(), lockfree::hashmap< Key, T >::freelist_retire(), lockfree::hashmap< Key, T >::hash_erase_internal(), lockfree::hashmap< Key, T >::hash_insert_internal(), lockfree::hashmap< Key, T >::iterator::iterate(), and lockfree::hashmap< Key, T >::unlock().
|
private |
Definition at line 107 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::destroy(), and lockfree::hashmap< Key, T >::init().
|
private |
Definition at line 108 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::clear().
|
private |
Definition at line 104 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::destroy(), lockfree::hashmap< Key, T >::get_bucket(), lockfree::hashmap< Key, T >::init(), and lockfree::hashmap< Key, T >::iterator::iterate().
|
private |
Definition at line 110 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::erase_locked(), lockfree::hashmap< Key, T >::freelist_claim(), lockfree::hashmap< Key, T >::get_hash(), lockfree::hashmap< Key, T >::get_keyp(), lockfree::hashmap< Key, T >::get_nextp(), lockfree::hashmap< Key, T >::get_nextp_ref(), lockfree::hashmap< Key, T >::get_pthread_mutexp(), lockfree::hashmap< Key, T >::init(), lockfree::hashmap< Key, T >::iterator::iterate(), lockfree::hashmap< Key, T >::list_delete(), lockfree::hashmap< Key, T >::list_find(), lockfree::hashmap< Key, T >::list_insert_internal(), lockfree::hashmap< Key, T >::lock_entry_mutex(), lockfree::hashmap< Key, T >::safeguard_use_mutex_or_tran_started(), lockfree::hashmap< Key, T >::unlock(), lockfree::hashmap< Key, T >::unlock_entry_mutex_force(), and lockfree::hashmap< Key, T >::unlock_entry_mutex_if_locked().
|
private |
Definition at line 102 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::destroy(), lockfree::hashmap< Key, T >::freelist_claim(), lockfree::hashmap< Key, T >::freelist_retire(), lockfree::hashmap< Key, T >::get_element_count(), lockfree::hashmap< Key, T >::get_tran_descriptor(), and lockfree::hashmap< Key, T >::init().
|
private |
Definition at line 105 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::clear(), lockfree::hashmap< Key, T >::destroy(), lockfree::hashmap< Key, T >::get_hash(), lockfree::hashmap< Key, T >::get_size(), lockfree::hashmap< Key, T >::init(), and lockfree::hashmap< Key, T >::iterator::iterate().
|
private |
Definition at line 120 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::dump_stats(), and lockfree::hashmap< Key, T >::freelist_claim().
|
private |
Definition at line 118 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::clear(), and lockfree::hashmap< Key, T >::dump_stats().
|
private |
Definition at line 116 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::dump_stats(), and lockfree::hashmap< Key, T >::hash_erase_internal().
|
private |
Definition at line 114 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::dump_stats(), and lockfree::hashmap< Key, T >::find().
|
private |
Definition at line 115 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::dump_stats(), and lockfree::hashmap< Key, T >::hash_insert_internal().
|
private |
Definition at line 119 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::dump_stats(), and lockfree::hashmap< Key, T >::iterator::iterate().
|
private |
Definition at line 121 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::dump_stats(), and lockfree::hashmap< Key, T >::freelist_retire().
|
private |
Definition at line 117 of file lockfree_hashmap.hpp.
Referenced by lockfree::hashmap< Key, T >::dump_stats(), and lockfree::hashmap< Key, T >::unlock().