55 lines
1.7 KiB
C
55 lines
1.7 KiB
C
/**
|
|
* @file re_mem.h Interface to Memory management with reference counting
|
|
*
|
|
* Copyright (C) 2010 Creytiv.com
|
|
*/
|
|
|
|
|
|
/**
|
|
* Defines the memory destructor handler, which is called when the reference
|
|
* of a memory object goes down to zero
|
|
*
|
|
* @param data Pointer to memory object
|
|
*/
|
|
typedef void (mem_destroy_h)(void *data);
|
|
|
|
/** Memory Statistics */
|
|
struct memstat {
|
|
size_t bytes_cur; /**< Current bytes allocated */
|
|
size_t blocks_cur; /**< Current blocks allocated */
|
|
};
|
|
|
|
void *mem_alloc(size_t size, mem_destroy_h *dh);
|
|
void *mem_zalloc(size_t size, mem_destroy_h *dh);
|
|
void *mem_realloc(void *data, size_t size);
|
|
void *mem_reallocarray(void *ptr, size_t nmemb,
|
|
size_t membsize, mem_destroy_h *dh);
|
|
void mem_destructor(void *data, mem_destroy_h *dh);
|
|
void *mem_ref(void *data);
|
|
void *mem_deref(void *data);
|
|
uint32_t mem_nrefs(const void *data);
|
|
|
|
void mem_debug(void);
|
|
void mem_threshold_set(ssize_t n);
|
|
struct re_printf;
|
|
int mem_status(struct re_printf *pf, void *unused);
|
|
int mem_get_stat(struct memstat *mstat);
|
|
|
|
|
|
/* Secure memory functions */
|
|
int mem_seccmp(const uint8_t *s1, const uint8_t *s2, size_t n);
|
|
void mem_secclean(void *data, size_t size);
|
|
|
|
|
|
/* Mem Pool */
|
|
struct mem_pool;
|
|
struct mem_pool_entry;
|
|
int mem_pool_alloc(struct mem_pool **poolp, size_t nmemb, size_t membsize,
|
|
mem_destroy_h *dh);
|
|
int mem_pool_extend(struct mem_pool *pool, size_t num);
|
|
struct mem_pool_entry *mem_pool_borrow(struct mem_pool *pool);
|
|
struct mem_pool_entry *mem_pool_borrow_extend(struct mem_pool *pool);
|
|
void *mem_pool_release(struct mem_pool *pool, struct mem_pool_entry *e);
|
|
void *mem_pool_member(const struct mem_pool_entry *entry);
|
|
void mem_pool_flush(struct mem_pool *pool);
|