From 4ce39f7e73b1d1ca4ac5c906d9f9593f46872133 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Tue, 28 Jan 2014 06:58:09 +0100 Subject: [PATCH] buflib: Add a define telling the per-alloc overhead. This allows buflib clients to more accurately estimate the total memory usage. It's still not 100% accurate because the handle table grows in blocks, thus buflib might use more memory that caused by allocations directly. Change-Id: I68338bb94f510ad188fcb588aebf895b5f9197c5 --- firmware/buflib.c | 2 ++ firmware/include/buflib.h | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/firmware/buflib.c b/firmware/buflib.c index 27a6965ee0..8d5fe1eef3 100644 --- a/firmware/buflib.c +++ b/firmware/buflib.c @@ -55,6 +55,8 @@ * to find the start of the character array (and therefore the start of the * entire block) when only the handle or payload start is known. * + * UPDATE BUFLIB_ALLOC_OVERHEAD (buflib.h) WHEN THIS COOKIE CHANGES! + * * Example: * |<- alloc block #1 ->|<- unalloc block ->|<- alloc block #2 ->|<-handle table->| * |L|H|C|cccc|L2|crc|XXXXXX|-L|YYYYYYYYYYYYYYYY|L|H|C|cc|L2|crc|XXXXXXXXXXXXX|AAA| diff --git a/firmware/include/buflib.h b/firmware/include/buflib.h index e912429b1f..1bae3e7a3f 100644 --- a/firmware/include/buflib.h +++ b/firmware/include/buflib.h @@ -53,6 +53,17 @@ struct buflib_context bool compact; }; +/** + * This declares the minimal overhead that is required per alloc. These + * are bytes that are allocated from the context's pool in addition + * to the actually requested number of bytes. + * + * The total number of bytes consumed by an allocation is + * BUFLIB_ALLOC_OVERHEAD + requested bytes + strlen(