getnewbuf(9r)getnewbuf(9r)NAME
getnewbuf - General: Allocates a buf structure
SYNOPSIS
struct buf * getnewbuf(
void );
ARGUMENTS
None
DESCRIPTION
The getnewbuf routine allocates a buf structure for performing I/O operations. This routine guarantees that the members of the structure
are properly initialized prior to initiating the I/O request. Device drivers call this routine prior to calling
physio, which performs the I/O operation.
RETURN VALUES
Upon successful completion, getnewbuf returns a pointer to the allocated buf structure. On failure, it returns a NULL pointer.
getnewbuf(9r)
Check Out this Related Man Page
physio(9F) Kernel Functions for Drivers physio(9F)NAME
physio, minphys - perform physical I/O
SYNOPSIS
#include <sys/types.h>
#include <sys/buf.h>
#include <sys/uio.h>
int physio(int(*strat)(struct buf *), struct buf *bp, dev_t dev,
int rw, void (*mincnt)(struct buf *), struct uio *uio);
void minphys(struct buf *bp);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).
PARAMETERS
physio()
strat Pointer to device strategy routine.
bp Pointer to a buf(9S) structure describing the transfer. If bp is set to NULL then physio() allocates one which is automatically
released upon completion.
dev The device number.
rw Read/write flag. This is either B_READ when reading from the device, or B_WRITE when writing to the device.
mincnt Routine which bounds the maximum transfer unit size.
uio Pointer to the uio structure which describes the user I/O request.
minphys()
bp Pointer to a buf structure.
DESCRIPTION
physio() performs unbuffered I/O operations between the device dev and the address space described in the uio structure.
Prior to the start of the transfer physio() verifies the requested operation is valid by checking the protection of the address space spec-
ified in the uio structure. It then locks the pages involved in the I/O transfer so they can not be paged out. The device strategy routine,
strat(), is then called one or more times to perform the physical I/O operations. physio() uses biowait(9F) to block until strat() has com-
pleted each transfer. Upon completion, or detection of an error, physio() unlocks the pages and returns the error status.
physio() uses mincnt() to bound the maximum transfer unit size to the system, or device, maximum length. minphys() is the system mincnt()
routine for use with physio() operations. Drivers which do not provide their own local mincnt() routines should call physio() with min-
phys().
minphys() limits the value of bp->b_bcount to a sensible default for the capabilities of the system. Drivers that provide their own
mincnt() routine should also call minphys() to make sure they do not exceed the system limit.
RETURN VALUES
physio() returns:
0 Upon success.
non-zero Upon failure.
CONTEXT
physio() can be called from user context only.
SEE ALSO strategy(9E), biodone(9F), biowait(9F), buf(9S), uio(9S)
Writing Device Drivers
WARNINGS
Since physio() calls biowait() to block until each buf transfer is complete, it is the drivers responsibility to call biodone(9F) when the
transfer is complete, or physio() will block forever.
SunOS 5.11 2 Apr 1993 physio(9F)
Hi Folks,
Today hasn't been the best one of my career in IT.
I've been a contractor for a major utility company for a number of years, on a number of seperate IT contracts mostly Unix. The company had 10 different flavours of unix and multiple different varsions of most of them.
At the... (3 Replies)