Sun Microsystems, Inc.
spacerspacer
spacer   www.sun.com docs.sun.com | | |  
spacer
black dot
   
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z
    
 
Kernel Functions for Driversfreeb(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

 

freeb() 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

 

freeb() can be called from user or interrupt 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


SunOS 5.9Go To TopLast Changed 13 Nov 2000

 
      
      
Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.