Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
BIN(3)			   Library Functions Manual			BIN(3)

NAME
       binalloc, bingrow, binfree - grouped memory allocation

SYNOPSIS
       #include	<u.h>
       #include	<libc.h>
       #include	<bin.h>

       typedef struct BinBin;

       void  *binalloc(Bin **bp, ulong size, int clr);

       void  *bingrow(Bin **bp,	void *op, ulong	osize,
		 ulong size, int clr);

       void  binfree(Bin **bp);

DESCRIPTION
       These  routines	provide	simple grouped memory allocation and dealloca-
       tion.  Items allocated with binalloc are	added to the Bin pointed to by
       bp.  All	items in a bin may be freed with one call to binfree; there is
       no way to free a	single item.

       Binalloc	returns	a pointer to a new block of at least size bytes.   The
       block  is  suitably  aligned for	storage	of any type of object.	No two
       active pointers from binalloc will have the same	value.	The  call  bi-
       nalloc(0)  returns  a  valid  pointer rather than null.	If clr is non-
       zero, the allocated memory is set to 0; otherwise, the contents are un-
       defined.

       Bingrow is used to extend the size of a block of	memory returned	by bi-
       nalloc.	Bp must	point to the same bin group used to allocate the orig-
       inal  block,  and  osize	must be	the last size used to allocate or grow
       the block.  A pointer to	a block	of at least size  bytes	 is  returned,
       with  the  same	contents in the	first osize locations.	If clr is non-
       zero, the remaining bytes are set to 0, and  are	 undefined  otherwise.
       If  op  is nil, it and osize are	ignored, and the result	is the same as
       calling binalloc.

       Binalloc	and bingrow allocate large chunks of memory using  and	return
       pieces of these chunks.	The chunks are free'd upon a call to binfree.

SOURCE
       /src/libbin

SEE ALSO
DIAGNOSTICS
       binalloc	and bingrow return 0 if	there is no available memory.

									BIN(3)

NAME | SYNOPSIS | DESCRIPTION | SOURCE | SEE ALSO | DIAGNOSTICS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=bin&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help