Innerhalb
Nach weiteren Dokumenten suchen
Support-Ressourcen
| Dieses Buch im PDF-Format herunterladen
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);
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)
-
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.
|
|