aphysio, aminphys - perform asynchronous physical I/O
#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);
strat
cancel
dev
rw
mincnt
aio_reqp
Solaris DDI specific (Solaris DDI).
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:
aphysio() returns:
0
non-zero
aphysio() can be called from user context only.
aread(9E), awrite(9E), strategy(9E), anocancel(9F), biodone(9F), biowait(9F), minphys(9F), physio(9F), aio_req(9S), buf(9S), uio(9S)
It is the driver's responsibility to call biodone(9F) when the transfer is complete.
Cancellation is not supported in this release. The address of the function anocancel(9F) must be used as the cancel argument.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |