Fix FS#12408 - don't load skins too early causing buflib handles to leak
[maemo-rb.git] / firmware / core_alloc.c
blob21dd1319ddac079c319fb22d281e4e0c8fae4005
2 #include <string.h>
3 #include "core_alloc.h"
4 #include "buflib.h"
5 #include "buffer.h"
7 /* not static so it can be discovered by core_get_data() */
8 struct buflib_context core_ctx;
10 /* debug test alloc */
11 static int test_alloc;
12 void core_allocator_init(void)
14 buffer_init();
15 size_t size;
16 void *start = buffer_get_buffer(&size);
17 buflib_init(&core_ctx, start, size);
18 buffer_release_buffer(size);
20 test_alloc = core_alloc("test", 112);
23 bool core_test_free(void)
25 bool ret = test_alloc > 0;
26 if (ret)
27 test_alloc = core_free(test_alloc);
29 return ret;
32 int core_alloc(const char* name, size_t size)
34 return buflib_alloc_ex(&core_ctx, size, name, NULL);
37 int core_alloc_ex(const char* name, size_t size, struct buflib_callbacks *ops)
39 return buflib_alloc_ex(&core_ctx, size, name, ops);
42 size_t core_available(void)
44 return buflib_available(&core_ctx);
47 int core_free(int handle)
49 return buflib_free(&core_ctx, handle);
52 int core_alloc_maximum(const char* name, size_t *size, struct buflib_callbacks *ops)
54 return buflib_alloc_maximum(&core_ctx, name, size, ops);
57 bool core_shrink(int handle, void* new_start, size_t new_size)
59 return buflib_shrink(&core_ctx, handle, new_start, new_size);
62 int core_get_num_blocks(void)
64 return buflib_get_num_blocks(&core_ctx);
67 void core_print_block_at(int block_num, char* buf, size_t bufsize)
69 buflib_print_block_at(&core_ctx, block_num, buf, bufsize);