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

write - write data to a device

#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);

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

Device number.


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


Pointer to the user credential structure for the I/O transaction.

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.

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

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));

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

Writing Device Drivers

March 28, 1997 OmniOS