From 1bc015efddaf7dc4ddd1b6b6831c43e7ad4582c0 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 31 Jan 2018 05:27:54 +0000 Subject: malloc: add malloc_usable_size() --- libc/stdlib/malloc-standard/malloc_usable_size.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 libc/stdlib/malloc-standard/malloc_usable_size.c (limited to 'libc') diff --git a/libc/stdlib/malloc-standard/malloc_usable_size.c b/libc/stdlib/malloc-standard/malloc_usable_size.c new file mode 100644 index 000000000..c78c6a867 --- /dev/null +++ b/libc/stdlib/malloc-standard/malloc_usable_size.c @@ -0,0 +1,14 @@ +/* + malloc_usable_size - fully inspired by musl implementation +*/ + +#include "malloc.h" + +/* for malloc_usable_size */ +#define OVERHEAD (2*sizeof(size_t)) +#define CHUNK_SIZE(c) ((c)->size & -2) +#define MEM_TO_CHUNK(p) (struct malloc_chunk *)((char *)(p) - OVERHEAD) + +size_t malloc_usable_size(void *p) { + return p ? CHUNK_SIZE(MEM_TO_CHUNK(p)) - OVERHEAD : 0; +} -- cgit v1.2.3