xmemout 内核服务

用途

通过将数据从内核全局内存复制到指定的地址空间来执行跨内存移动。

语法

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/xmem.h>
int xmemout (kaddr, uaddr, count, dp)
caddr_t * kaddr;
caddr_t * uaddr;
int  count;
struct xmem * dp;

参数

描述
卡德尔 指定内核内存中的地址。
瓦德尔 指定由跨内存描述符指定的内存中的地址。
COUNT 指定要复制的字节数。
dp 指定跨存储器描述符。

描述

xmemout 内核服务可执行跨内存移动。 当将数据移动到或移出除程序正在执行的地址空间之外的地址空间时,就会发生跨内存移动。 xmemout 内核服务将数据从内核全局内存复制到指定的地址空间。

提供了 xmemout 内核服务,以便内核进程和中断处理程序可以安全地访问用户进程中的缓冲区。 调用 克马塔赫 内核服务将准备用户缓冲区以进行跨内存移动。

xmemout 内核服务与 科皮因复制 内核服务不同,因为在用户进程下不执行时,它用于访问用户缓冲区。 与此相反, 科皮因复制 内核服务仅用于在用户进程下执行时访问用户缓冲区。

执行环境

可以从 流程中断 环境中调用 xmemout 内核服务。

返回值

描述
XMEM_SUCC 指示成功完成。
XMEM_FAIL 指示下列其中一个错误:
  • 用户不具有对用户缓冲区的适当访问权限。
  • 该用户缓冲区位于无效的地址范围内。
  • 包含用户缓冲区的段已被删除。
  • 该交叉内存描述符无效。
  • 当正在访问用户缓冲区时发生页面调度 I/O 错误。

    如果用户缓冲区不在内存中,那么在执行中断级别时, xmemout 服务还会返回 XMEM_FAIL 错误。