From 157a32956a111b8cffcfa8d1c62a0ca67cdc0b22 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Sat, 7 May 2005 15:22:45 +0000 Subject: r6645: Add talloc_get_size() function. Sometimes it is usefull to know this data. Simo. (This used to be commit df401847827ef660d8b9d55af9b27bb85bad6b5f) --- source4/lib/talloc/talloc.c | 10 ++++++++++ source4/lib/talloc/talloc.h | 1 + source4/lib/talloc/talloc_guide.txt | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/source4/lib/talloc/talloc.c b/source4/lib/talloc/talloc.c index da3a2300b0..248af6ea3e 100644 --- a/source4/lib/talloc/talloc.c +++ b/source4/lib/talloc/talloc.c @@ -1082,3 +1082,13 @@ void *talloc_autofree_context(void) } +size_t talloc_get_size(const void *context) { + struct talloc_chunk *tc; + + if (context == NULL) + return 0; + + tc = talloc_chunk_from_ptr(context); + + return tc->size; +} diff --git a/source4/lib/talloc/talloc.h b/source4/lib/talloc/talloc.h index 8b448f63c5..ab549cf624 100644 --- a/source4/lib/talloc/talloc.h +++ b/source4/lib/talloc/talloc.h @@ -126,6 +126,7 @@ void *_talloc_zero_array(const void *ctx, size_t el_size, unsigned count, const void *_talloc_realloc_array(const void *ctx, void *ptr, size_t el_size, unsigned count, const char *name); void *talloc_realloc_fn(const void *context, void *ptr, size_t size); void *talloc_autofree_context(void); +size_t talloc_get_size(const void *ctx); #endif diff --git a/source4/lib/talloc/talloc_guide.txt b/source4/lib/talloc/talloc_guide.txt index 55349ec05b..c23ac77cad 100644 --- a/source4/lib/talloc/talloc_guide.txt +++ b/source4/lib/talloc/talloc_guide.txt @@ -559,3 +559,11 @@ talloc_get_type() to do type checking on void* pointers. It is equivalent to this: talloc_set_name_const(ptr, #type) + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +talloc_get_size(const void *ctx); + +This function lets you know the amount of memory alloced so far by +this context. It does NOT account for subcontext memory. +This can be used to calculate the size of an array. + -- cgit