Performs a cross-memory move by copying data from the specified address space to kernel global memory.
#include <sys/types.h> #include <sys/errno.h> #include <sys/xmem.h>
int xmemin (uaddr, kaddr, count, dp) caddr_t *uaddr; caddr_t *kaddr; int count; struct xmem *dp;
|uaddr||Specifies the address in memory specified by a cross-memory descriptor.|
|kaddr||Specifies the address in kernel memory.|
|count||Specifies the number of bytes to copy.|
|dp||Specifies the cross-memory descriptor.|
The xmemin kernel service performs a cross-memory move. A cross-memory move occurs when data is moved to or from an address space other than the address space that the program is executing in. The xmemin kernel service copies data from the specified address space to kernel global memory.
The xmemin kernel service is provided so that kernel processes and interrupt handlers can safely access a buffer within a user process. Calling the xmattach kernel service prepares the user buffer for the cross-memory move.
The xmemin kernel service differs from the copyin and copyout kernel services in that it is used to access a user buffer when not executing under the user process. In contrast, the copyin and copyout kernel services are used only to access a user buffer while executing under the user process.
The xmemin kernel service can be called from either the process or interrupt environment.
|XMEM_SUCC||Indicates successful completion.|
|XMEM_FAIL|| Indicates one of the following errors:
The xmemin kernel service is part of Base Operating System (BOS) Runtime.
The xmattach kernel service, xmdetach kernel service, xmemout kernel service.
Cross Memory Kernel Services and Memory Kernel Services in AIX Kernel Extensions and Device Support Programming Concepts.