FREEB(9F) Kernel Functions for Drivers FREEB(9F)
NAME
freeb - free a message block
SYNOPSIS
#include <sys/stream.h>
void freeb(
mblk_t *bp);
PARAMETERS
bp Pointer to the message block to be deallocated.
mblk_t is an
instance of the
msgb(9S) structure.
INTERFACE LEVEL
Architecture independent level 1 (DDI/DKI).
DESCRIPTION
The
freeb() function deallocates a message block. If the reference count
of the
db_ref member of the
datab(9S) structure is greater than
1,
freeb() decrements the count. If
db_ref equals
1, it deallocates the
message block and the corresponding data block and buffer.
If the data buffer to be freed was allocated with the
esballoc(9F), the
buffer may be a non-STREAMS resource. In that case, the driver must be
notified that the attached data buffer needs to be freed, and run its own
freeing routine. To make this process independent of the driver used in
the stream,
freeb() finds the
free_rtn(9S) structure associated with the
buffer. The
free_rtn structure contains a pointer to the driver-dependent
routine, which releases the buffer. Once this is accomplished,
freeb() releases the
STREAMS resources associated with the buffer.
CONTEXT
The
freeb() function can be called from user, interrupt, or kernel
context.
EXAMPLES
Example 1: Using freeb()
See
copyb(9F) for an example of using
freeb().
SEE ALSO
allocb(9F),
copyb(9F),
dupb(9F),
esballoc(9F),
free_rtn(9S) Writing Device Drivers STREAMS Programming Guide January 16, 2006
FREEB(9F)