+/**
+ * talloc_set_allocator - set the allocations function(s) for talloc.
+ * @malloc: the malloc function
+ * @free: the free function
+ * @realloc: the realloc function
+ *
+ * Instead of using the standard malloc, free and realloc, talloc will use
+ * these replacements. @realloc will never be called with size 0 or ptr NULL.
+ */
+void talloc_set_allocator(void *(*malloc)(size_t size),
+ void (*free)(void *ptr),
+ void *(*realloc)(void *ptr, size_t size));
+
+/**
+ * talloc_add_external - create an externally allocated node
+ * @ctx: the parent
+ * @realloc: the realloc() equivalent
+ * @lock: the call to lock before manipulation of external nodes
+ * @unlock: the call to unlock after manipulation of external nodes
+ *
+ * talloc_add_external() creates a node which uses a separate allocator. All
+ * children allocated from that node will also use that allocator.
+ *
+ * Note: Currently there is only one external allocator, not per-node,
+ * and it is set with this function.
+ *
+ * @lock is handed a pointer which was previous returned from your realloc
+ * function; you should use that to figure out which lock to get if you have
+ * multiple external pools.
+ *
+ * The parent pointers in realloc is the talloc pointer of the parent, if any.
+ */
+void *talloc_add_external(const void *ctx,
+ void *(*realloc)(const void *parent,
+ void *ptr, size_t),
+ void (*lock)(const void *p),
+ void (*unlock)(void));
+