Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ read(9E) — SunOS 5.6

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

read(2)

write(9E)

physio(9F)

cb_ops(9S)

uio(9S)

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.

ARGUMENTS

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

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)
{
intrval;
offset_toff;
intinstance;
xx_txx;
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.6  —  Last change: 28 Mar 1997

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026