Print this page
code review from Josh and Robert

@@ -61,37 +61,104 @@
 A character string giving a name to the vmem
 arena to be created.
 .It Fa base
 An address indicating the lowest possible value in the arena.
 .It Fa size
-The size of the arena to create
+The size of the arena to create.
 .It Fa quantum
 The arena's
 .Dq quantum .
-The granularity of the arena.  The amount allocated at minimum by each request.
+The granularity of the arena.  The amount allocated at minimum by each
+request.  Must be a power of 2.
 .It Fa afunc
 A function which is called to import new spans from
-.Fa source .
-Which may be
+.Fa source ,
+which may be
 .Dv NULL
 if this arena does not import from another.
+When calling
+.Fn vmem_create
+.Fa afunc
+is an
+.Vt vmem_alloc_t
+a function taking three parameters and returning a pointer to
+.Vt void
+(the imported space):
+.Bl -tag -width Ds
+.It Fa "vmem_t *"
+The source arena from which we'll import.  The
+.Fa source
+argument to
+.Fn vmem_create .
+.It Fa size_t
+The size to import
+.It Fa int
+The
+.Fa vmflag
+argument used for the import.
+.El
+.Pp
+When calling
+.Fn vmem_xcreate
+.Fa afunc
+is an
+.Vt vmem_ximport_t
+a function taking four parameters and returning a pointer to
+.Vt void
+(the imported space):
+.Bl -tag -width Ds
+.It Fa "vmem_t *"
+The source arena from which we'll import.  The
+.Fa source
+argument to
+.Fn vmem_xcreate .
+.It Fa "size_t *"
+The size of the import,
+.Fa afunc
+may
+.Em increase
+this size if that is desirable, but must never decrease it.
+.It Fa size_t
+The desired alignment of the imported space.
+.It Fa int
+the
+.Fa vmflag
+argument used for the import.
+.El
 .It Fa ffunc
 A function which is called to return spans to
-.Fa source .
-Which may be
+.Fa source ,
+which may be
 .Dv NULL
 if this arena does not import from another.
+This is a
+.Vt vmem_free_t
+a function taking three parametes and returning void:
+.Bl -tag -width Ds
+.It Fa "vmem_t"
+The arena to which space is being returned.  The
+.Fa source
+argument to
+.Fn vmem_create
+or
+.Fn vmem_xcreate .
+.It Fa "void *"
+The span being returned to the source arena.
+.It Fa "size_t"
+The size of the span being returned to the source arena.
+.El
 .It Fa source
-An arena from which this arena will import.
-Which may be
+An arena from which this arena will import,
+which may be
 .Dv NULL
 if this arena does not import from another.
 .It Fa qcache_max
 Each arena offers caching of integer multiples of
 .Fa quantum
 up to
-.Fa qcache_max .
+.Fa qcache_max ,
+which may be 0.
 .It Fa vmflag
 A bitmask of flags indicating the characteristics of this arena.
 .Bl -tag -width Ds
 .It Dv VMC_IDENTIFIER
 The arena represents arbitrary integer identifiers, rather than virtual

@@ -124,16 +191,17 @@
 .Fa afunc
 to alter the size of the span imported from
 .Fa source .
 It is only legal to
 .Em increase
-thise size.
+this size.
 .Sh CONTEXT
 These functions can be called from user or kernel context.
 .Sh RETURN VALUES
 Upon successful completion the
-.Fn vmem_create and
+.Fn vmem_create
+and
 .Fn vmem_xcreate
 functions return a pointer to a vmem arena.  Otherwise,
 .Dv NULL
 is returned to indicate the arena could not be created.
 .Sh SEE ALSO