aphysio(9F)
NAME
aphysio - perform asynchronous physical I/O
SYNOPSIS
#include <sys/types.h>
#include <sys/buf.h>
#include <sys/uio.h>
#include <sys/aio_req.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>
int aphysio(int (*strat)(struct buf *), int
(*cancel)(struct buf *), dev_t dev, int rw, void
(*mincnt)(struct buf *), struct aio_req *aio_reqp);
PARAMETERS
strat
Pointer to device strategy routine.
cancel
Pointer to driver cancel routine. Used to cancel a
submitted request. The driver must pass the address of
the function anocancel(9F) because cancellation is not
supported.
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.
aio_reqp
Pointer to the aio_req(9S) structure which describes
the user I/O request.
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).
DESCRIPTION
aphysio() performs asynchronous I/O operations between the
device and the address space described by aio_reqp->aio_uio.
Prior to the start of the transfer, aphysio() verifies the
requested operation is valid. 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. aphy-
sio() does not wait for each transfer to complete, but
returns as soon as the necessary requests have been made.
aphysio() calls mincnt to bound the maximum transfer unit
size to a sensible default for the device and the system.
Drivers which do not provide their own local mincnt routine
should call aphysio() with
minphys(9F). minphys(9F) is the system mincnt routine.
minphys(9F) ensures the transfer size does not exceed any
system limits.
If a driver supplies a local mincnt routine, this routine
should perform the following actions:
o If bp->b_bcount exceeds a device limit, set
bp->b_bcount to a value supported by the device.
o Call minphys(9F) to ensure that the driver does not
circumvent additional system limits.
RETURN VALUES
aphysio() returns:
0 Upon success.
non-zero
Upon failure.
CONTEXT
aphysio() can be called from user context only.
SEE ALSO
aread(9E), awrite(9E), strategy(9E), anocancel(9F),
biodone(9F), biowait(9F), minphys(9F), physio(9F),
aio_req(9S), buf(9S), uio(9S)
Writing Device Drivers
WARNINGS
It is the driver's responsibility to call biodone(9F) when
the transfer is complete.
BUGS
Cancellation is not supported in this release. The address
of the function anocancel(9F) must be used as the cancel
argument.
Man(1) output converted with
man2html