.TH BIN 3
.SH NAME
binalloc, bingrow, binfree \- grouped memory allocation
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.br
.B #include <bin.h>
.PP
.ta \w'\fLvoid* 'u
.PP
.B
typedef struct Bin	Bin;
.PP
.B
void	*binalloc(Bin **bp, ulong size, int clr);
.PP
.B
void	*bingrow(Bin **bp, void *op, ulong osize,
.br
.B
	ulong size, int clr);
.PP
.B
void	binfree(Bin **bp);
.SH DESCRIPTION
These routines provide simple grouped memory allocation and deallocation.
Items allocated with
.I binalloc
are added to the
.I Bin
pointed to by
.IR bp .
All items in a bin may be freed with one call to
.IR binfree ;
there is no way to free a single item.
.PP
.I Binalloc
returns a pointer to a new block of at least
.I size
bytes.
The block is suitably aligned for storage of any type of object.
No two active pointers from
.I binalloc
will have the same value.
The call
.B binalloc(0)
returns a valid pointer rather than null.
If
.I clr
is non-zero, the allocated memory is set to 0;
otherwise, the contents are undefined.
.PP
.I Bingrow
is used to extend the size of a block of memory returned by
.IR binalloc .
.I Bp
must point to the same bin group used to allocate the original block,
and
.I osize
must be the last size used to allocate or grow the block.
A pointer to a block of at least
.I size
bytes is returned, with the same contents in the first
.I osize
locations.
If
.I clr
is non-zero, the remaining bytes are set to 0,
and are undefined otherwise.
If
.I op
is
.BR nil ,
it and
.I osize
are ignored, and the result is the same as calling
.IR binalloc .
.PP
.I Binalloc
and
.I bingrow
allocate large chunks of memory using
.IR malloc (3)
and return pieces of these chunks.
The chunks are
.IR free 'd
upon a call to
.IR binfree .
.SH SOURCE
.B \*9/src/libbin
.SH SEE ALSO
.IR malloc (3)
.SH DIAGNOSTICS
.I binalloc
and
.I bingrow
return 0 if there is no available memory.
