From 4478b25ede0129b1572145737627db7297dcc89f Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Wed, 5 Oct 2011 18:32:19 +0000 Subject: core_alloc: Provide a tiny test allocation, which can be freed for debug purposes. This allocation can be freed in the buflib debug menu (select it to free). Doing a another allocation, e.g. by selecting another item in this debug menu will cause compaction (all allocs move). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30719 a1c6a512-1295-4272-9138-f99709370657 --- firmware/core_alloc.c | 14 ++++++++++++++ firmware/include/core_alloc.h | 4 ++++ 2 files changed, 18 insertions(+) (limited to 'firmware') diff --git a/firmware/core_alloc.c b/firmware/core_alloc.c index 2250f5c664..21dd1319dd 100644 --- a/firmware/core_alloc.c +++ b/firmware/core_alloc.c @@ -6,6 +6,9 @@ /* not static so it can be discovered by core_get_data() */ struct buflib_context core_ctx; + +/* debug test alloc */ +static int test_alloc; void core_allocator_init(void) { buffer_init(); @@ -13,6 +16,17 @@ void core_allocator_init(void) void *start = buffer_get_buffer(&size); buflib_init(&core_ctx, start, size); buffer_release_buffer(size); + + test_alloc = core_alloc("test", 112); +} + +bool core_test_free(void) +{ + bool ret = test_alloc > 0; + if (ret) + test_alloc = core_free(test_alloc); + + return ret; } int core_alloc(const char* name, size_t size) diff --git a/firmware/include/core_alloc.h b/firmware/include/core_alloc.h index b2edec5377..0ac7e5b73d 100644 --- a/firmware/include/core_alloc.h +++ b/firmware/include/core_alloc.h @@ -28,6 +28,10 @@ int core_get_num_blocks(void); void core_print_block_at(int block_num, char* buf, size_t bufsize); #endif +/* frees the debug test alloc created at initialization, + * since this is the first any further alloc should force a compaction run */ +bool core_test_free(void); + static inline void* core_get_data(int handle) { extern struct buflib_context core_ctx; -- cgit v1.2.3