xm_mapin 内核服务
用途
在当前流程上下文中设置可寻址性。
语法
#include <sys/adspace.h>
int xm_mapin (dp, baddr, count, eaddr)
struct xmem *dp;caddr_t baddr;
size_t count;
caddr_t *eaddr;
描述
xm_mapin 内核服务将当前进程上下文中的可寻址性设置为由地址 [巴德尔, 巴德尔 + 计数 -1] 的 民主党 参数所指向的交叉内存描述符所指示的地址空间。
此服务专门为客户机文件系统或其他需要设置 xmem 描述符所定义的地址空间的可寻址性的用户创建。
如果所请求的映射跨越段边界,那么将不会执行任何映射,并且会返回 EAGAIN 的返回码以指示需要对 xm_mapin 内核服务进行个别调用以映射每个段中的缓冲区部分。 必须使用原始 巴德尔 和 计数 (指示下一个段的字节数) 来再次调用 xm_mapin 内核服务。 (可以使用 xm_maxmap 内核服务获取到下一个段边界的字节数。) 这将提供一个用于访问缓冲区的这一部分的有效地址。 然后,必须使用段边界地址 (先前为 巴德尔 + 计数) 和新 计数 (指示缓冲区的剩余部分或下一个段边界,以较小者为准) 以迭代方式调用 xm_mapin 。 这将提供另一个有效地址以用于访问缓冲区的下一部分。
当不再需要由 xm_mapin 内核服务设置的每个地址时,必须使用 xm_det 内核服务撤销该地址,因为 xm_mapin 内核服务当前使用的是 弗 _att 内核服务。
参数
| 项 | 描述 |
|---|---|
| dp | 指向该交叉内存描述符。 |
| 巴德尔 | 指向该虚拟缓冲区。 |
| COUNT | 指定要映射的虚拟缓冲区的长度。 |
| 埃德尔 | 指向用于访问数据缓冲区的有效地址的返回位置。 |
返回值
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功。 (引用参数 埃德尔 包含要使用的地址) |
| XMEM_FAIL | 交叉内存描述符无效。 |
| EAGAIN | 迂到分段边界交叉。 调用者应该进行单独的 xm_mapin 调用以映射每个有价值的段。 |
执行环境
可从进程或中断环境中调用 xm_mapin 内核服务。