]> git.ozlabs.org Git - ccan/blobdiff - ccan/talloc/talloc.h
Simplify external allocation (realloc only from Tridge)
[ccan] / ccan / talloc / talloc.h
index da416a4b77e27acc619b10f4e676286444be1784..e06f592b4630de7cdf1fa960a5253342231a1eed 100644 (file)
@@ -442,12 +442,12 @@ void talloc_free_children(void *ptr);
 #define talloc_zero_array(ctx, type, count) (type *)_talloc_zero_array(ctx, sizeof(type), count, #type)
 
 /**
- * talloc_zero_array - allocate an array of zeroed types
+ * talloc_array_size - allocate an array of elements of the given size
  * @ctx: context to be parent of this allocation, or NULL.
- * @type: the type to be allocated.
+ * @size: the size of each element
  * @count: the number of elements to be allocated.
  *
- * Just like talloc_array, but zeroes the memory.
+ * Typeless form of talloc_array.
  */
 #define talloc_array_size(ctx, size, count) _talloc_array(ctx, size, count, __location__)
 
@@ -929,30 +929,21 @@ size_t talloc_get_size(const void *ctx);
 void *talloc_find_parent_byname(const void *ctx, const char *name);
 
 /**
- * talloc_external_enable - set external allocators for some nodes
- * @alloc: the malloc() equivalent
- * @free: the free() equivalent
+ * talloc_add_external - create an externally allocated node
+ * @ctx: the parent
  * @realloc: the realloc() equivalent
  *
- * talloc_mark_external() can be used to mark nodes whose children should
- * use separate allocators.  Currently the set of allocators is global, not
- * per-node, and is set with this function.
+ * talloc_add_external() creates a node which uses a separate allocator.  All
+ * children allocated from that node will also use that allocator.
  *
- * The parent pointers is the talloc pointer of the parent.
- */
-void talloc_external_enable(void *(*alloc)(void *parent, size_t size),
-                           void (*free)(void *ptr, void *parent),
-                           void *(*realloc)(void *ptr, void *parent, size_t));
-
-/**
- * talloc_mark_external - children of this note must use external allocators
- * @p: the talloc pointer
+ * Note: Currently there is only one external allocator, not per-node,
+ * and it is set with this function.
  *
- * This function indicates that all children (and children's children etc)
- * should use the allocators set up wth talloc_external_enable() rather than
- * normal malloc/free.
+ * The parent pointers in realloc is the talloc pointer of the parent, if any.
  */
-void talloc_mark_external(void *ptr);
+void *talloc_add_external(const void *ctx,
+                         void *(*realloc)(const void *parent,
+                                          void *ptr, size_t));
 
 /* The following definitions come from talloc.c  */
 void *_talloc(const void *context, size_t size);