33#include "xtc_export.h"
40typedef struct xtc_mctx xtc_mctx_t;
42typedef enum xtc_mctx_flags {
44 XTC_MCTX_THREAD_SAFE = 1u << 0
47typedef void (*xtc_mctx_cleanup_fn)(
void *user);
68XTC_API
int xtc_mctx_create(xtc_mctx_t *parent,
const char *name,
69 unsigned flags, xtc_mctx_t **out);
73XTC_API
void xtc_mctx_destroy(xtc_mctx_t *m);
77XTC_API
void xtc_mctx_reset(xtc_mctx_t *m);
80XTC_API
void *xtc_mctx_alloc(xtc_mctx_t *m,
size_t size);
81XTC_API
void *xtc_mctx_calloc(xtc_mctx_t *m,
size_t n,
size_t size);
84XTC_API
void *xtc_mctx_strdup(xtc_mctx_t *m,
const char *s);
88XTC_API
void xtc_mctx_free(xtc_mctx_t *m,
void *p);
100XTC_API
int xtc_mctx_register_cleanup(xtc_mctx_t *m,
101 xtc_mctx_cleanup_fn fn,
void *user);
103XTC_API
const char *xtc_mctx_name(
const xtc_mctx_t *m);
104XTC_API
size_t xtc_mctx_total_bytes(
const xtc_mctx_t *m);
105XTC_API
size_t xtc_mctx_total_chunks(
const xtc_mctx_t *m);
167typedef struct xtc_arena_group xtc_arena_group_t;
181XTC_API
int xtc_arena_group_create(
const char *name,
182 xtc_arena_group_t **out);
187XTC_API
void xtc_arena_group_destroy(xtc_arena_group_t *g);
191XTC_API xtc_mctx_t *xtc_arena_group_mctx(xtc_arena_group_t *g);
202XTC_API
int xtc_arena_group_add(xtc_arena_group_t *g);
228XTC_API
int xtc_arena_group_discard(xtc_arena_group_t *g,
int reason,
229 int64_t timeout_ns,
int *out_all_gone);
232XTC_API
int xtc_arena_group_size(xtc_arena_group_t *g);