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)