uiomove(9F)




NAME

     uiomove - copy kernel data using uio structure


SYNOPSIS

     #include <sys/types.h>
     #include <sys/uio.h>

     int uiomove(caddr_t  address,  size_t  nbytes,  enum  uio_rw
     rwflag, uio_t *uio_p);


INTERFACE LEVEL

     Architecture independent level 1 (DDI/DKI).


PARAMETERS

     address
           Source/destination kernel address of the copy.

     nbytes
           Number of bytes to copy.

     rwflag
           Flag indicating  read  or  write  operation.  Possible
           values are UIO_READ and UIO_WRITE.

     uio_p Pointer to the uio structure for the copy.


DESCRIPTION

     The uiomove() function copies nbytes of data to or from  the
     space  defined  by  the uio structure (described in uio(9S))
     and the driver.

     The uio_segflg member of the  uio(9S)  structure  determines
     the  type  of  space  to or from which the transfer is being
     made. If it is set to UIO_SYSSPACE,  the  data  transfer  is
     between   addresses   in   the  kernel.  If  it  is  set  to
     UIO_USERSPACE, the transfer is between a  user  program  and
     kernel space.

     rwflag indicates the direction of the transfer. If  UIO_READ
     is  set,  the  data  will be transferred from address to the
     buffer(s) described by uio_p. If UIO_WRITE is set, the  data
     will be transferred from the buffer(s) described by uio_p to
     address.

     In addition to moving the data, uiomove() adds the number of
     bytes  moved  to the iov_base member of the iovec(9S) struc-
     ture, decreases the iov_len member, increases the uio_offset
     member of the
      uio(9S) structure, and decreases the uio_resid member.

     This function automatically handles page faults. nbytes does
     not have to be word-aligned.


RETURN VALUES

     uiomove() returns 0 upon success or EFAULT on failure.


CONTEXT

     User context only, if uio_segflg is  set  to  UIO_USERSPACE.
     User   or   interrupt  context,  if  uio_segflg  is  set  to
     UIO_SYSSPACE.


SEE ALSO

     ureadc(9F), uwritec(9F), iovec(9S), uio(9S)

     Writing Device Drivers


WARNINGS

     If uio_segflg is set to UIO_SYSSPACE and address is selected
     from user space, the system may panic.


Man(1) output converted with man2html