40#define TLSF_ALIGN_SIZE 16
41#define TLSF_ALIGN_MASK (TLSF_ALIGN_SIZE - 1)
42#define TLSF_ALIGN_UP(x) (((x) + TLSF_ALIGN_MASK) & ~TLSF_ALIGN_MASK)
45#define SL_INDEX_COUNT_LOG2 5
46#define SL_INDEX_COUNT (1U << SL_INDEX_COUNT_LOG2)
47#define SL_INDEX_MASK (SL_INDEX_COUNT - 1)
50#define FL_INDEX_COUNT (8 * sizeof(size_t))
58#define BLOCK_FLAG_FREE 0x1U
59#define BLOCK_FLAG_PREV_FREE 0x2U
60#define BLOCK_SIZE_MASK (~(size_t)(BLOCK_FLAG_FREE | BLOCK_FLAG_PREV_FREE))
77#define TLSF_HEADER_SIZE ((size_t)sizeof(block_header_t))
78#define TLSF_FREE_BLOCK_SIZE ((size_t)sizeof(free_block_t))
79#define TLSF_MIN_BLOCK_SIZE TLSF_FREE_BLOCK_SIZE
80#define TLSF_SENTINEL_SIZE TLSF_HEADER_SIZE
119#ifdef __XENEVA_DEBUG_ALLOC__
126#define TLSF_RZ_SIZE 16
127#define TLSF_RZ_PATTERN 0xFCu
128#define TLSF_POISON_FREE 0x6Bu
129#define TLSF_POISON_FRESH 0xAAu
130#define TLSF_DBG_HDR_SIZE ((size_t)sizeof(tlsf_dbg_hdr_t))
131#define TLSF_DBG_OVERHEAD (TLSF_DBG_HDR_SIZE + 2 * TLSF_RZ_SIZE)
133typedef struct tlsf_dbg_hdr {
150uint64_t tlsf_dbg_violation_count(
void);
155void tlsf_dbg_hint_set(
void *caller);
unsigned int uint32_t
Definition acefiex.h:163
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
size_t size
Definition drm_bridge.h:1299
struct free_block * next_free
Definition tlsf.h:72
struct free_block * prev_free
Definition tlsf.h:73
block_header_t hdr
Definition tlsf.h:71
uint64_t fl_bitmap
Definition tlsf.h:84
size_t pool_size
Definition tlsf.h:87
free_block_t * blocks[FL_INDEX_COUNT][SL_INDEX_COUNT]
Definition tlsf.h:86
size_t used_size
Definition tlsf.h:88
uint32_t sl_bitmap[FL_INDEX_COUNT]
Definition tlsf.h:85
#define SL_INDEX_COUNT
Definition tlsf.h:46
tlsf_pool_t * tlsf_get_pool(void)
Definition tlsf.c:48
int tlsf_add_memory(tlsf_pool_t *pool, void *mem, size_t size)
Definition tlsf.c:358
tlsf_pool_t * tlsf_create(void)
Definition tlsf.c:351
struct free_block free_block_t
struct block_header block_header_t
void * tlsf_malloc(tlsf_pool_t *pool, size_t size)
Definition tlsf.c:411
void * tlsf_realloc(tlsf_pool_t *pool, void *ptr, size_t size)
Definition tlsf.c:644
void tlsf_free(tlsf_pool_t *pool, void *ptr)
Definition tlsf.c:522
#define FL_INDEX_COUNT
Definition tlsf.h:50
struct tlsf_pool tlsf_pool_t