Midnight Sun Firmware
Loading...
Searching...
No Matches
arena.h
1#pragma once
2
3/************************************************************************************************
4 * @file arena.h
5 *
6 * @brief Header file for the arena library
7 *
8 * @date 2026-01-10
9 * @author -
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stddef.h>
14#include <stdint.h>
15
16/* Inter-component Headers */
17
18/* Intra-component Headers */
19#include "status.h"
20
28typedef struct {
29 uint8_t *base;
30 uint8_t *end;
31 uint8_t *current;
32} Arena;
33
41StatusCode arena_init(Arena *a, void *buffer, ptrdiff_t cap);
42
49
58void *arena_alloc(Arena *a, ptrdiff_t size, ptrdiff_t align, ptrdiff_t count);
59
StatusCode
StatusCodes for various errors.
Definition: status.h:27
StatusCode arena_init(Arena *a, void *buffer, ptrdiff_t cap)
Initialize an arena to use a provided buffer.
Definition: arena.c:18
void * arena_alloc(Arena *a, ptrdiff_t size, ptrdiff_t align, ptrdiff_t count)
Allocate memory from the arena.
Definition: arena.c:37
StatusCode arena_reset(Arena *a)
Reset the arena to reuse all capacity.
Definition: arena.c:29
Linear arena allocator state.
Definition: arena.h:28
uint8_t * current
Definition: arena.h:31
uint8_t * base
Definition: arena.h:29
uint8_t * end
Definition: arena.h:30