picofuse

arena.h
Go to the documentation of this file.
1 
42 #pragma once
43 #include <stddef.h>
44 
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48 
50 // TYPES
51 
58 
64 typedef struct sys_mem_stats_t {
65  size_t size_bytes;
66  size_t used_bytes;
67  size_t allocations;
69 
71 // LIFECYCLE
72 
101  void *(*malloc_fn)(size_t size),
102  void (*free_fn)(void *ptr));
103 
116 
126  sys_mem_stats_t *stats);
127 
130 // PUBLIC METHODS
132 
147 void *sys_mem_arena_alloc(sys_mem_arena_t *arena, size_t size);
148 
161 void *sys_mem_arena_realloc(sys_mem_arena_t *arena, void *ptr, size_t size);
162 
172 void sys_mem_arena_free(sys_mem_arena_t *arena, void *ptr);
173 
176 
178 #ifdef __cplusplus
179 }
180 #endif
void * sys_mem_arena_realloc(sys_mem_arena_t *arena, void *ptr, size_t size)
Resize an allocation within a single arena.
Snapshot of arena usage statistics.
Definition: arena.h:64
void sys_mem_arena_free(sys_mem_arena_t *arena, void *ptr)
Release an allocation owned by a single arena.
sys_mem_arena_t * sys_mem_arena_next(sys_mem_arena_t *arena, sys_mem_stats_t *stats)
Return the next arena in a chain.
struct sys_mem_arena_t sys_mem_arena_t
Arena allocator handle.
Definition: arena.h:57
size_t size_bytes
Total payload capacity of the arena in bytes.
Definition: arena.h:65
size_t used_bytes
Number of payload bytes currently allocated.
Definition: arena.h:66
sys_mem_arena_t * sys_mem_arena_init(size_t size, sys_mem_arena_t *prev, void *(*malloc_fn)(size_t size), void(*free_fn)(void *ptr))
Initialize a new arena.
size_t allocations
Number of active allocations in the arena.
Definition: arena.h:67
void sys_mem_arena_delete(sys_mem_arena_t *arena)
Delete the tail arena of a chain.
struct sys_mem_stats_t sys_mem_stats_t
Snapshot of arena usage statistics.
void * sys_mem_arena_alloc(sys_mem_arena_t *arena, size_t size)
Allocate memory from a single arena.