ureadc(D3)

ureadc - copy a character to space described by uio(D4) structure

Showing IRIX 6.5.30 (default release). Unchanged since IRIX 6.5.

NAME
     ureadc - copy a character to space described by uio(D4) structure

SYNOPSIS
     #include <sys/uio.h>
     #include <sys/ddi.h>
     int ureadc(int c, uio_t *uiop);

   Arguments
     c         The character to be copied.

     uiop      Pointer to the uio structure.

DESCRIPTION
     ureadc copies the character c into the space described by the uio
     structure pointed to by uiop.

     The uio_segflg member of the uio structure specifies the type of space to
     which the copy is made.  If uio_segflg is set to UIO_SYSSPACE the
     character is copied to a kernel address.  If uio_segflg is set to
     UIO_USERSPACE the character is copied to a user address.

     If the character is successfully copied, ureadc updates the appropriate
     members of the uio and iovec(D4) structures to reflect the copy
     (uio_offset and iov_base are incremented and uio_resid and iov_len are
     decremented).

   Return Values
     ureadc returns 0 on success or an error number on failure.

USAGE
   Level
     Base only if uio_segflg is set to UIO_USERSPACE.

     Base or Interrupt if uio_segflg is set to UIO_SYSSPACE.

   Synchronization Constraints
     May sleep if uio_segflg is set to UIO_USERSPACE.

     Driver-defined basic locks and read/write locks may be held across calls
     to this function if uio_segflg is UIO_SYSSPACE but may not be held if
     uio_segflg is UIO_USERSPACE.

     Driver-defined sleep locks may be held across calls to this function
     regardless of the value of uio_segflg.

   Warnings
     When holding locks across calls to this function, multithreaded drivers
     must be careful to avoid creating a deadlock.  During the data transfer,
     page fault resolution might result in another I/O to the same device.
     For example, this could occur if the driver controls the disk drive used
     as the swap device.
REFERENCES
     iovec(D4), uio(D4), uiomove(D3), uwritec(D3)