summaryrefslogtreecommitdiff
path: root/devel/libarena/DESCR
diff options
context:
space:
mode:
Diffstat (limited to 'devel/libarena/DESCR')
-rw-r--r--devel/libarena/DESCR22
1 files changed, 22 insertions, 0 deletions
diff --git a/devel/libarena/DESCR b/devel/libarena/DESCR
new file mode 100644
index 00000000000..4d5f9fab780
--- /dev/null
+++ b/devel/libarena/DESCR
@@ -0,0 +1,22 @@
+Libarena is a custom memory allocator interface and implementation. Four
+allocators are provided: flat LIFO arena allocator, object pool allocator
+and two malloc(3) wrappers: one which returns the pointers unadulterated
+and one which obeys the requested, arbitrary alignment. These can be used
+directly, or through their exported prototype interfaces.
+
+Libarena is meant to provide a baseline interface so allocator's can be
+stacked, and to provide a simple and well defined interface for libraries
+and applications without becoming mired in features or capabilities. It is
+not meant to restrict or confine what custom allocators can actually
+accomplish. For instance, the included pool and arena allocators include a
+suite of string utilities which aren't available in the generic exportable
+interface. Note that these string utilities are built upon a generic
+interface (see util.h) which can take the prototypical allocation context,
+so they are also available to any 3rd party compatible allocators.
+
+Surprisingly few malloc(3) library "replacements" or plug-in interfaces
+support a context pointer argument. They're useless for many or most of
+the tasks where the ability to specify an alternate malloc(3) could
+actually be useful, e.g. poor man's RAII. For network daemons especially
+this feature is useful; all allocations for a particular session can be
+freed simply by closing the lowest-level allocator object.