Go to main content

man pages section 9: DDI and DKI Kernel Functions

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

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

dupb(9F), allocb(9F), copyb(9F), esballoc(9F), free_rtn(9S)

Writing Device Drivers in Oracle Solaris 11.4

STREAMS Programming Guide