WRITE(9E) Driver Entry Points WRITE(9E)

NAME


write - write data to a device

SYNOPSIS


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


int prefixwrite(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


Used for character or raw data I/O, the driver write() routine is called
indirectly through cb_ops(9S) by the write(2) system call. The
write() routine supervises the data transfer from user space to a device
described by the uio(9S) structure.


The write() routine should check the validity of the minor number
component of dev and the user credentials pointed to by cred_p, if
pertinent.

RETURN VALUES


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

EXAMPLES


The following is an example of a write() routine using physio(9F) to
perform writes to a seekable device:

static int
xxwrite(dev_t dev, struct uio *uiop, cred_t *credp)
{
int instance;
xx_t xx;

instance = getminor(dev);
xx = ddi_get_soft_state(xxstate, instance);
if (xx == NULL)
return (ENXIO);
return (physio(xxstrategy, NULL, dev, B_WRITE,
xxmin, uiop));
}


SEE ALSO


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


Writing Device Drivers

March 28, 1997 WRITE(9E)