123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- .TH BIN 2
- .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 (2)
- and return pieces of these chunks.
- The chunks are
- .IR free 'd
- upon a call to
- .IR binfree .
- .SH SOURCE
- .B /sys/src/libbin
- .SH SEE ALSO
- .IR malloc (2)
- .SH DIAGNOSTICS
- .I binalloc
- and
- .I bingrow
- return 0 if there is no available memory.
|