static brl_allocator_t allocator = {
- .alloc = mrp_mm_alloc,
- .realloc = mrp_mm_realloc,
- .strdup = mrp_mm_strdup,
- .free = mrp_mm_free
+ .allocfn = mrp_mm_alloc,
+ .reallocfn = mrp_mm_realloc,
+ .strdupfn = mrp_mm_strdup,
+ .freefn = mrp_mm_free
};
/* By default we use the libc memory allocator. */
brl_allocator_t __brl_mm = {
- .alloc = _brl_default_alloc,
- .realloc = _brl_default_realloc,
- .strdup = _brl_default_strdup,
- .free = _brl_default_free
+ .allocfn = _brl_default_alloc,
+ .reallocfn = _brl_default_realloc,
+ .strdupfn = _brl_default_strdup,
+ .freefn = _brl_default_free
};
/* Once an allocation is done, this will block changing the allocator. */
/** Memory allocation operations. */
typedef struct {
- void *(*alloc)(size_t size, const char *file, int line, const char *func);
- void *(*realloc)(void *ptr, size_t size, const char *file, int line,
- const char *func);
- char *(*strdup)(const char *str, const char *file, int line,
- const char *func);
- void (*free)(void *ptr, const char *file, int line, const char *func);
+ void *(*allocfn)(size_t size, const char *file, int line, const char *func);
+ void *(*reallocfn)(void *ptr, size_t size, const char *file, int line,
+ const char *func);
+ char *(*strdupfn)(const char *str, const char *file, int line,
+ const char *func);
+ void (*freefn)(void *ptr, const char *file, int line, const char *func);
} brl_allocator_t;
/** Override the default memory allocator. */
#define BRL_LOC __FILE__, __LINE__, __func__
/* Memory allocation macros used by breedline. */
-#define brl_allocz(size) ({ \
- void *_ptr; \
- size_t _size = size; \
- \
- if ((_ptr = __brl_mm.alloc(_size, BRL_LOC)) != NULL) \
- memset(_ptr, 0, _size); \
- \
- __brl_mm_busy = TRUE; \
- \
+#define brl_allocz(size) ({ \
+ void *_ptr; \
+ size_t _size = size; \
+ \
+ if ((_ptr = __brl_mm.allocfn(_size, BRL_LOC)) != NULL) \
+ memset(_ptr, 0, _size); \
+ \
+ __brl_mm_busy = TRUE; \
+ \
_ptr; })
#define brl_reallocz(ptr, o, n) ({ \
else \
_o = 0; \
\
- _ptr = __brl_mm.realloc(ptr, _size, BRL_LOC); \
+ _ptr = __brl_mm.reallocfn(ptr, _size, BRL_LOC); \
if (_ptr != NULL || _n == 0) { \
if ((unsigned)(_n) > (unsigned)(_o)) \
memset(_ptr + (_o), 0, \
#define brl_strdup(s) ({ \
__brl_mm_busy = TRUE; \
\
- __brl_mm.strdup((s), BRL_LOC); \
+ __brl_mm.strdupfn((s), BRL_LOC); \
})
-#define brl_free(ptr) __brl_mm.free((ptr), BRL_LOC)
+#define brl_free(ptr) __brl_mm.freefn((ptr), BRL_LOC)
extern brl_allocator_t __brl_mm;
extern int __brl_mm_busy;