aphysio(9f) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

aphysio(9f)

aphysio(9F)                    Kernel Functions                    aphysio(9F)



NAME
       aphysio, aminphys - 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 submit‐
                   ted request. The driver must pass the address of the  func‐
                   tion 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 trans‐
       fer 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 opera‐
       tions. 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 min‐
       phys(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 per‐
       form the following actions:

           o      If bp→b_bcount exceeds  a  device  limit,  physio()  returns
                  ENOTSUP.


           o      Call aminphys(9F) to ensure that the driver does not circum‐
                  vent additional system  limits.  If  aminphys(9F)  does  not
                  return 0, return ENOTSUP.


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 in Oracle Solaris 11.4

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 func‐
       tion anocancel(9F) must be used as the cancel argument.



Oracle Solaris 11.4               9 Nov 1994                       aphysio(9F)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3