.RE
.sp 1
..
-.TH pool 3 "7 July 2000" mLib
+.TH pool 3 "7 July 2000" "Straylight/Edgeware" "mLib utilities library"
.SH "NAME"
pool \- resource pool management
.\" @pool_alloc
.\" @pool_strdup
+.\" @pool_init
.\" @pool_create
.\" @pool_destroy
.\" @pool_sub
.nf
.B "#include <mLib/pool.h>"
+.BI "void pool_init(pool *" p ", arena *" a );
.BI "pool *pool_create(arena *" a );
.BI "pool *pool_sub(pool *" p );
.BI "void pool_destroy(pool *" p );
A new root pool is created using
.BR pool_create ,
passing it an arena from which it can allocate large memory blocks.
+Alternatively, you can allocate a
+.B pool
+structure from somewhere and initialize it by passing its address and an
+arena to
+.BR pool_init .
.PP
A subpool is created by calling
.BR pool_sub ,
.PP
Pools are destroyed by passing them to
.BR pool_destroy .
-Root pools are completely destroyed, since the memory containing the
-pool structure is allocated from the pool itself. Subpools, on the
-other hand, are allocated from a parent pool, and may be reused after
-being `destroyed'.
+Pools created by
+.B pool_create
+are completely destroyed, since the memory containing the pool structure
+is allocated from the pool itself. Subpools and pools allocated by the
+caller and initialized by
+.BR pool_init ,
+on the other hand, are
+allocated from a parent pool, and may be reused after being `destroyed'.
.SS "Memory allocation"
Memory is allocated from a pool by calling
.BR pool_alloc ,
.BR mLib (3),
.BR subarena (3).
.SH AUTHOR
-Mark Wooding, <mdw@nsict.org>
+Mark Wooding, <mdw@distorted.org.uk>