16#ifndef CYBER_TRANSPORT_SHM_ARENA_ADDRESS_ALLOCATOR_H_
17#define CYBER_TRANSPORT_SHM_ARENA_ADDRESS_ALLOCATOR_H_
60 bool Init(uint64_t capacity,
void* base_address,
61 uint64_t address_segment_size);
63 bool OpenOrCreate(uint64_t key, uint64_t size,
void* base_address,
64 void** shm_address,
bool* is_created);
65 bool Open(uint64_t key,
void* base_address,
void** shm_address);
68 uint64_t address_segment_size);
70 bool OpenMetaShm(uint64_t capacity,
void* base_address,
71 uint64_t address_segment_size);
73 bool OpenNodeShm(uint64_t capacity,
void* base_address,
74 uint64_t address_segment_size);
106 uint64_t meta_shm_key_;
107 uint64_t node_shm_key_;
108 void* meta_shm_address_;
109 void* node_shm_address_;
113 uint64_t* reclaim_stack_;
ArenaAddressNode * TreeRotateLeftRight(ArenaAddressNode *node, ArenaAddressNode **node_p)
uint64_t TreeHeight(ArenaAddressNode *node)
void Deallocate(uint64_t key)
ArenaAddressNode * TreeMax(ArenaAddressNode *node, ArenaAddressNode ***node_pp)
ArenaAddressNode * TreeRebalance(ArenaAddressNode *node, ArenaAddressNode **node_p)
void SwapNodePosition(ArenaAddressNode *x, ArenaAddressNode **x_p, ArenaAddressNode *y, ArenaAddressNode **y_p)
ArenaAddressNode * TreeRotateLeft(ArenaAddressNode *node, ArenaAddressNode **node_p)
ArenaAddressNode * FindNode(ArenaAddressNode *node, uint64_t key)
bool OpenOrCreate(uint64_t key, uint64_t size, void *base_address, void **shm_address, bool *is_created)
bool OpenOrCreate(uint64_t capacity, void *base_address, uint64_t address_segment_size)
bool Open(uint64_t key, void *base_address, void **shm_address)
bool OpenMetaShm(uint64_t capacity, void *base_address, uint64_t address_segment_size)
void ReclaimNode(ArenaAddressNode *node)
ArenaAddressNode * TreeRotateRightLeft(ArenaAddressNode *node, ArenaAddressNode **node_p)
int64_t TreeBalanceFactor(ArenaAddressNode *node)
ArenaAddressNode * NewNode(uint64_t key)
ArenaAddressNode * TreeMin(ArenaAddressNode *node, ArenaAddressNode ***node_pp)
ArenaAddressNode * TreeRotateRight(ArenaAddressNode *node, ArenaAddressNode **node_p)
void RemoveNode(ArenaAddressNode *node, ArenaAddressNode **node_addr, uint64_t key)
bool Init(uint64_t capacity, void *base_address, uint64_t address_segment_size)
ArenaAddressNode * FindOrInsertNode(ArenaAddressNode *node, ArenaAddressNode **node_p, ArenaAddressNode *parent, uint64_t key)
void * Allocate(uint64_t key)
bool OpenNodeShm(uint64_t capacity, void *base_address, uint64_t address_segment_size)
struct ArenaAddressNode * right_
std::atomic< uint64_t > ref_count_
struct ArenaAddressNode * parent_
struct ArenaAddressNode * left_