summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2011-10-05 18:32:19 +0000
committerThomas Martitz <kugel@rockbox.org>2011-10-05 18:32:19 +0000
commit4478b25ede0129b1572145737627db7297dcc89f (patch)
tree26e30d0021ee7d3433ec055c4576cb24f14d9080 /firmware
parent6efb3f0760b54fb80423924a7aab17da043dbba9 (diff)
downloadrockbox-4478b25ede0129b1572145737627db7297dcc89f.tar.gz
rockbox-4478b25ede0129b1572145737627db7297dcc89f.zip
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
Diffstat (limited to 'firmware')
-rw-r--r--firmware/core_alloc.c14
-rw-r--r--firmware/include/core_alloc.h4
2 files changed, 18 insertions, 0 deletions
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 @@
6 6
7/* not static so it can be discovered by core_get_data() */ 7/* not static so it can be discovered by core_get_data() */
8struct buflib_context core_ctx; 8struct buflib_context core_ctx;
9
10/* debug test alloc */
11static int test_alloc;
9void core_allocator_init(void) 12void core_allocator_init(void)
10{ 13{
11 buffer_init(); 14 buffer_init();
@@ -13,6 +16,17 @@ void core_allocator_init(void)
13 void *start = buffer_get_buffer(&size); 16 void *start = buffer_get_buffer(&size);
14 buflib_init(&core_ctx, start, size); 17 buflib_init(&core_ctx, start, size);
15 buffer_release_buffer(size); 18 buffer_release_buffer(size);
19
20 test_alloc = core_alloc("test", 112);
21}
22
23bool core_test_free(void)
24{
25 bool ret = test_alloc > 0;
26 if (ret)
27 test_alloc = core_free(test_alloc);
28
29 return ret;
16} 30}
17 31
18int core_alloc(const char* name, size_t size) 32int 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);
28void core_print_block_at(int block_num, char* buf, size_t bufsize); 28void core_print_block_at(int block_num, char* buf, size_t bufsize);
29#endif 29#endif
30 30
31/* frees the debug test alloc created at initialization,
32 * since this is the first any further alloc should force a compaction run */
33bool core_test_free(void);
34
31static inline void* core_get_data(int handle) 35static inline void* core_get_data(int handle)
32{ 36{
33 extern struct buflib_context core_ctx; 37 extern struct buflib_context core_ctx;