Manual page for aphysio(9F)
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);
ARGUMENTS
- 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.
aphysio()
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:
-
- If
bp->b_bcount
exceeds a device limit,
set
bp->b_bcount
to a value supported by the device.
- Call
minphys.9f
to ensure that the driver does not circumvent additional system limits.
RETURN VALUES
aphysio()
returns:
- 0
-
on success.
- error number
-
on 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
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.
Created by unroff & hp-tools.
© by Hans-Peter Bischof. All Rights Reserved (1997).
Last modified 21/April/97