Moves data between a virtual memory object and a buffer specified in the uio structure.
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/vmuser.h>
#include <sys/uio.h>
int vm_uiomove (vmid, limit, rw, uio)
vmid_t vmid;
int limit;
enum uio_rw rw;
struct uio *uio;
Item | Description |
---|---|
vmid | Specifies the virtual memory object ID. |
limit | Indicates the limit on the transfer length. If this parameter is negative or 0, no bytes are transferred. |
rw | Specifies a read/write flag that gives the direction of the move. The possible values for this parameter (UIO_READ, UIO_WRITE) are defined in the /usr/include/sys/uio.h file. |
uio | Points to the uio structure. |
The vm_uiomove kernel service moves data between a virtual memory object and the buffer specified in a uio structure.
This service determines the virtual addressing required for the data movement according to the offset in the object.
The vm_uiomove kernel service is similar to the uiomove kernel service, but the address for the trusted buffer is specified by the vmid parameter and the uio_offset field of offset parameters instead of as a caddr_t address. The offset size is a 64 bit offset_t, which allows file offsets in client segments which are greater than 2 gigabytes. vm_uiomove must be used instead of vm_move if the client filesystem supports files which are greater than 2 gigabytes.
I/O errors for paging space and a lack of paging space are reported as signals.
The vm_uiomove kernel service can be called from the process environment only.
Item | Description |
---|---|
0 | Indicates a successful operation. |
EFAULT | Indicates a bad address. |
ENOMEM | Indicates insufficient memory. |
ENOSPC | Indicates insufficient disk space. |
EIO | Indicates an I/O error. |
Other file system-specific errno global variables are returned by the virtual file system involved in the move function.