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_move (vmid, offset, limit, rw, uio) vmid_t vmid; caddr_t offset; int limit; enum uio_rw rw; struct uio *uio;
The vm_move 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_move kernel service is similar to the uiomove kernel service, but the address for the trusted buffer is specified by the vmid and offset parameters instead of as a caddr_t address. The offset size is also limited to the size of a caddr_t address since virtual memory objects must be smaller than this size.
Note: The vm_move kernel service does not support use of cross-memory descriptors.
I/O errors for paging space and a lack of paging space are reported as signals.
The vm_move kernel service can be called from the process environment only.
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.
The vm_move kernel service is part of Base Operating System (BOS) Runtime.
The uiomove kernel service.
Memory Kernel Services and Understanding Virtual Memory Manager Interfaces in AIX Kernel Extensions and Device Support Programming Concepts.