Sun Microsystems, Inc.
spacerspacer
spacer   www.sun.com docs.sun.com | | |  
spacer
black dot
   
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z
    
 
Driver Entry Pointsread(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 transaction.

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 supervise 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


SunOS 5.9Go To TopLast Changed 19 Nov 1997

 
      
      
Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.