diff options
Diffstat (limited to 'firmware/core_alloc.c')
-rw-r--r-- | firmware/core_alloc.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/firmware/core_alloc.c b/firmware/core_alloc.c new file mode 100644 index 0000000000..75dfc75b86 --- /dev/null +++ b/firmware/core_alloc.c | |||
@@ -0,0 +1,57 @@ | |||
1 | |||
2 | #include <string.h> | ||
3 | #include "core_alloc.h" | ||
4 | #include "buflib.h" | ||
5 | #include "buffer.h" | ||
6 | |||
7 | /* not static so it can be discovered by core_get_data() */ | ||
8 | struct buflib_context core_ctx; | ||
9 | |||
10 | void core_allocator_init(void) | ||
11 | { | ||
12 | buffer_init(); | ||
13 | size_t size; | ||
14 | void *start = buffer_get_buffer(&size); | ||
15 | buflib_init(&core_ctx, start, size); | ||
16 | buffer_release_buffer(size); | ||
17 | } | ||
18 | |||
19 | int core_alloc(const char* name, size_t size) | ||
20 | { | ||
21 | return buflib_alloc_ex(&core_ctx, size, name, NULL); | ||
22 | } | ||
23 | |||
24 | int core_alloc_ex(const char* name, size_t size, struct buflib_callbacks *ops) | ||
25 | { | ||
26 | return buflib_alloc_ex(&core_ctx, size, name, ops); | ||
27 | } | ||
28 | |||
29 | size_t core_available(void) | ||
30 | { | ||
31 | return buflib_available(&core_ctx); | ||
32 | } | ||
33 | |||
34 | int core_free(int handle) | ||
35 | { | ||
36 | return buflib_free(&core_ctx, handle); | ||
37 | } | ||
38 | |||
39 | int core_alloc_maximum(const char* name, size_t *size, struct buflib_callbacks *ops) | ||
40 | { | ||
41 | return buflib_alloc_maximum(&core_ctx, name, size, ops); | ||
42 | } | ||
43 | |||
44 | bool core_shrink(int handle, void* new_start, size_t new_size) | ||
45 | { | ||
46 | return buflib_shrink(&core_ctx, handle, new_start, new_size); | ||
47 | } | ||
48 | |||
49 | int core_get_num_blocks(void) | ||
50 | { | ||
51 | return buflib_get_num_blocks(&core_ctx); | ||
52 | } | ||
53 | |||
54 | void core_print_block_at(int block_num, char* buf, size_t bufsize) | ||
55 | { | ||
56 | buflib_print_block_at(&core_ctx, block_num, buf, bufsize); | ||
57 | } | ||