Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ uiomove(D3) — UnixWare 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought






       uiomove(D3)                                              uiomove(D3)


       NAME
             uiomove - copy data using uio structure

       SYNOPSIS
             #include <sys/types.h>
             #include <sys/uio.h>
             #include <sys/ddi.h>
             int uiomove(caddr_t addr, long nbytes, uio_rw_t rwflag, uio_t *uiop);

          Arguments
             addr      Source/destination kernel address of the copy.

             nbytes    Number of bytes to copy.

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

             uiop      Pointer to the uio structure for the copy.

       DESCRIPTION
             The uiomove function copies nbytes of data between the kernel
             address addr and the space defined by the uio(D4) structure
             pointed to by uiop.  If rwflag is UIO_READ, the data is copied
             from addr to the space described by the uio structure.  If
             rwflag is UIO_WRITE, the data is copied from the space
             described by the uio structure to addr.

             The uio_segflg member of the uio structure specifies the type
             of space described by the uio structure.  If uio_segflg is set
             to UIO_SYSSPACE the uio structure describes a portion of the
             kernel address space.  If uio_segflg is set to UIO_USERSPACE
             the uio structure describes a portion of the user address
             space.

             If the copy is successful, uiomove updates the appropriate
             members of the uio and iovec(D4) structures to reflect the
             copy (uio_offset and iov_base are increased by nbytes and
             uio_resid and iov_len are decrease by nbytes).

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

       USAGE
          Level
             Base only if uio_segflg is set to UIO_USERSPACE.



                           Copyright 1994 Novell, Inc.               Page 1













      uiomove(D3)                                              uiomove(D3)


            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
            If addr specifies an address in user space or if the value of
            uio_segflg is not consistent with the type of address space
            described by the uio structure, the system can panic.

            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
            bcopy(D3), copyin(D3), copyout(D3), ureadc(D3), uwritec(D3),
            iovec(D4), uio(D4)

      NOTICES
         Portability
            All processors

         Applicability
            ddi: 1, 2, 3, 4, 5, 5mp, 6, 6mp, 7, 7mp














                          Copyright 1994 Novell, Inc.               Page 2








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