16 #define getAddrMapNode(x) rbtree_item((x), addrMapNode, node)
45 if (!p)
return nullptr;
55 static bool linearInit()
75 for (shift = 4; shift < 32; shift ++)
77 if ((1U<<shift) == alignment)
84 if (!sLinearPool.
Ready() && !linearInit())
89 if (!sLinearPool.
Allocate(chunk, size, shift))
92 auto node = newNode(chunk);
115 auto node = getNode(mem);
void * linearAlloc(size_t size)
#define getAddrMapNode(x)
rbtree_node_t * rbtree_find(const rbtree_t *tree, const rbtree_node_t *node)
void Deallocate(const MemChunk &chunk)
rbtree_node_t * rbtree_insert(rbtree_t *tree, rbtree_node_t *node)
void rbtree_init(rbtree_t *tree, rbtree_node_comparator_t comparator)
void linearFree(void *mem)
rbtree_node_t * rbtree_remove(rbtree_t *tree, rbtree_node_t *node, rbtree_node_destructor_t destructor)
void * linearRealloc(void *mem, size_t size)
void AddBlock(MemBlock *blk)
bool Allocate(MemChunk &chunk, u32 size, int align)
static MemBlock * Create(u8 *base, u32 size)
void * linearMemAlign(size_t size, size_t alignment)