19 #ifndef _LOCKFREE_FREELIST_HPP_ 20 #define _LOCKFREE_FREELIST_HPP_ 58 size_t get_alloc_count ()
const;
59 size_t get_available_count ()
const;
60 size_t get_backbuffer_count ()
const;
61 size_t get_forced_allocation_count ()
const;
62 size_t get_retired_count ()
const;
63 size_t get_claimed_count ()
const;
88 void swap_backbuffer ();
89 void alloc_backbuffer ();
90 void force_alloc_block ();
98 void clear_free_nodes ();
99 void final_sanity_checks ()
const;
112 void reclaim ()
final override;
117 void set_owner (
freelist &m_freelist);
119 void set_freelist_next (
free_node *next);
120 void reset_freelist_next (
void);
140 : m_transys (transys)
141 , m_trantable (new tran::table (transys))
142 , m_block_size (block_size)
143 , m_available_list {
NULL }
154 if (initial_block_count <= 1)
157 initial_block_count = 2;
161 for (
size_t i = 0;
i < initial_block_count;
i++)
378 while (!dest.compare_exchange_weak (rhead, &head));
422 if (alloc_count > unused_count)
424 return alloc_count - unused_count;
450 #if !defined (NDEBUG) 454 size_t list_count = 0;
487 : tran::reclaimable_node ()
541 #endif // !_LOCKFREE_FREELIST_HPP_
size_t get_backbuffer_count() const
std::atomic< size_t > m_alloc_count
free_node * pop_from_available()
std::atomic< size_t > m_retired_count
std::atomic< free_node * > m_backbuffer_head
void reclaim_retired_list()
void retire_node(reclaimable_node &hzp)
void check_my_pointer(free_node *node)
size_t get_alloc_count() const
tran::table & get_transaction_table()
free_node * get_freelist_next()
size_t get_claimed_count() const
void push_to_list(free_node &head, free_node &tail, std::atomic< free_node * > &dest)
tran::table * m_trantable
void final_sanity_checks() const
std::atomic< size_t > m_bb_count
void dealloc_list(free_node *head)
size_t get_available_count() const
void set_freelist_next(free_node *next)
size_t get_retired_count() const
descriptor & get_descriptor(const index &tran_index)
int count(int &result, const cub_regex_object ®, const std::string &src, const int position, const INTL_CODESET codeset)
std::atomic< size_t > m_forced_alloc_count
free_node * claim(tran::descriptor &tdes)
tran::system & get_transaction_system()
static void free_node(T_NODE_INFO *node)
void retire(tran::descriptor &tdes, free_node &node)
std::atomic< free_node * > m_backbuffer_tail
void set_owner(freelist &m_freelist)
reclaimable_node * m_retired_next
void reset_freelist_next(void)
std::atomic< size_t > m_available_count
void reclaim() finaloverride
void alloc_list(free_node *&head, free_node *&tail)
std::atomic< free_node * > m_available_list
size_t get_forced_allocation_count() const