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)