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)