read(9e) 맨 페이지 - 윈디하나의 솔라나라

개요

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

read(9e)

read(9E)                      Driver Entry Points                     read(9E)



NAME
       read - read data from a device

SYNOPSIS
       #include <sys/types.h>
       #include <sys/errno.h>
       #include <sys/open.h>
       #include <sys/uio.h>
       #include <sys/cred.h>
       #include <sys/ddi.h>
       #include <sys/sunddi.h>

       int prefixread(dev_t dev, struct uio *uio_p, cred_t *cred_p);

INTERFACE LEVEL
       Architecture  independent  level  1  (DDI/DKI).  This  entry  point  is
       optional.

PARAMETERS
       dev       Device number.


       uio_p     Pointer to the uio(9S) structure  that  describes  where  the
                 data is to be stored in user space.


       cred_p    Pointer to the user credential structure for the I/O transac‐
                 tion.


DESCRIPTION
       The driver read() routine is called indirectly  through  cb_ops(9S)  by
       the  read(2)  system call. The read() routine should check the validity
       of the minor number component of dev and the user credential  structure
       pointed  to  by cred_p (if pertinent). The read() routine should super‐
       vise the data transfer into the user space  described  by  the  uio(9S)
       structure.

RETURN VALUES
       The  read()  routine  should  return  0 for success, or the appropriate
       error number.

EXAMPLES
       Example 1 read() routine using physio()



       The following is an example of a read()  routine  using  physio(9F)  to
       perform reads from a non-seekable device:


               static int
               xxread(dev_t dev, struct uio *uiop, cred_t *credp)
               {
                        int                 rval;
                        offset_t            off;
                        int                 instance;
                        xx_t                xx;

                        instance = getminor(dev);
                        xx = ddi_get_soft_state(xxstate, instance);
                        if (xx == NULL)
                                  return (ENXIO);
                        off = uiop->uio_loffset;
                        rval = physio(xxstrategy, NULL, dev, B_READ,
                                  xxmin, uiop);
                        uiop->uio_loffset = off;
                        return (rval);
               }



SEE ALSO
       read(2), write(9E), physio(9F), cb_ops(9S), uio(9S)


       Writing Device Drivers in Oracle Solaris 11.4



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