Arena allocator implementation.
More...
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
Go to the source code of this file.
|
| #define | SBL_ARENA_DEF |
| |
| #define | SBL_ARENA_PUSH_STRUCT(arena, type) |
| |
| #define | SBL_ARENA_PUSH_STRUCT_ZERO(arena, type) |
| |
| #define | SBL_ARENA_PUSH_ARRAY(arena, type, count) |
| |
| #define | SBL_ARENA_PUSH_ARRAY_ZERO(arena, type, count) |
| |
| #define | SBL_ARENA_PUSH_STRING(arena, str) |
| |
| #define | SBL_ARENA_MEMSET(dst, val, sz) |
| |
| #define | SBL_ARENA_MEMCPY(dst, src, sz) |
| |
|
| typedef struct SblArenaBlock | SblArenaBlock |
| | A single block of memory in the arena.
|
| |
| typedef struct SblArena | SblArena |
| | Arena allocator.
|
| |
Arena allocator implementation.
Definition in file sbl_arena.h.
◆ SBL_ARENA_DEF
◆ SBL_ARENA_MEMCPY
| #define SBL_ARENA_MEMCPY |
( |
| dst, |
|
|
| src, |
|
|
| sz ) |
◆ SBL_ARENA_MEMSET
| #define SBL_ARENA_MEMSET |
( |
| dst, |
|
|
| val, |
|
|
| sz ) |
◆ SBL_ARENA_PUSH_ARRAY
| #define SBL_ARENA_PUSH_ARRAY |
( |
| arena, |
|
|
| type, |
|
|
| count ) |
Value:
SBL_ARENA_DEF void * sbl_arena_alloc(SblArena *arena, uint64_t size)
Definition at line 21 of file sbl_arena.h.
21#define SBL_ARENA_PUSH_ARRAY(arena, type, count) \
22 ((type*)sbl_arena_alloc((arena), sizeof(type) * (count)))
◆ SBL_ARENA_PUSH_ARRAY_ZERO
| #define SBL_ARENA_PUSH_ARRAY_ZERO |
( |
| arena, |
|
|
| type, |
|
|
| count ) |
Value:
SBL_ARENA_DEF void * sbl_arena_alloc_zero(SblArena *arena, uint64_t size)
Definition at line 23 of file sbl_arena.h.
23#define SBL_ARENA_PUSH_ARRAY_ZERO(arena, type, count) \
24 ((type*)sbl_arena_alloc_zero((arena), sizeof(type) * (count)))
◆ SBL_ARENA_PUSH_STRING
| #define SBL_ARENA_PUSH_STRING |
( |
| arena, |
|
|
| str ) |
Value:
#define SBL_ARENA_MEMCPY(dst, src, sz)
Definition at line 26 of file sbl_arena.h.
26#define SBL_ARENA_PUSH_STRING(arena, str) \
27 ((char*)SBL_ARENA_MEMCPY(sbl_arena_alloc((arena), strlen(str) + 1), (str), strlen(str) + 1))
◆ SBL_ARENA_PUSH_STRUCT
| #define SBL_ARENA_PUSH_STRUCT |
( |
| arena, |
|
|
| type ) |
◆ SBL_ARENA_PUSH_STRUCT_ZERO
| #define SBL_ARENA_PUSH_STRUCT_ZERO |
( |
| arena, |
|
|
| type ) |
◆ SblArena
| typedef struct SblArena SblArena |
Arena allocator.
Manages a chain of memory blocks to provide linear allocations without individual free calls.
◆ SblArenaBlock
| typedef struct SblArenaBlock SblArenaBlock |
A single block of memory in the arena.
◆ sbl_arena_alloc()
◆ sbl_arena_alloc_zero()
◆ sbl_arena_free()
◆ sbl_arena_init()
◆ sbl_arena_mark()
◆ sbl_arena_reset()
◆ sbl_arena_rewind()
◆ sbl_get_thread_arena()
◆ sbl_thread_arena
◆ sbl_thread_arena_initialized
| __thread int sbl_thread_arena_initialized |
|
extern |