GETRBUF(9F) Kernel Functions for Drivers GETRBUF(9F)


NAME


getrbuf - get a raw buffer header

SYNOPSIS


#include <sys/buf.h>
#include <sys/kmem.h>
#include <sys/ddi.h>


struct buf *getrbuf(int sleepflag);


INTERFACE LEVEL


Architecture independent level 1 (DDI/DKI).

PARAMETERS


sleepflag
Indicates whether driver should sleep for free space.


DESCRIPTION


The getrbuf() function allocates the space for a buffer header to the
caller. It is used in cases where a block driver is performing raw
(character interface) I/O and needs to set up a buffer header that is not
associated with the buffer cache.


The getrbuf() function calls kmem_alloc(9F) to perform the memory
allocation. kmem_alloc() requires the information included in the
sleepflag argument. If sleepflag is set to KM_SLEEP, the driver may sleep
until the space is freed up. If sleepflag is set to KM_NOSLEEP, the
driver will not sleep. In either case, a pointer to the allocated space
is returned or NULL to indicate that no space was available.

RETURN VALUES


The getrbuf() function returns a pointer to the allocated buffer header,
or NULL if no space is available.

CONTEXT


The getrbuf() function can be called from user, interrupt, or kernel
context. (Drivers must not allow getrbuf() to sleep if called from an
interrupt routine.)

SEE ALSO


bioinit(9F), freerbuf(9F), kmem_alloc(9F), kmem_free(9F)


Writing Device Drivers


January 27, 2015 GETRBUF(9F)