vm_guatt 内核服务
用途
将全局内核内存的区域连接到当前进程的地址空间。
语法
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/vmuser.h>
int vm_guatt (kaddr, size, key, flags, uaddr)
void * kaddr;
vmsize_t size;
vmkey_t key;
long flags;
void ** uaddr;
参数
| 项 | 描述 |
|---|---|
| 卡德尔 | 要连接的内核地址 (在分配全局内存时从 vm_galloc 返回)。 |
| 大小 | 要插入到进程地址空间中的区域的长度 (以字节为单位)。 |
| key | 进程在访问连接的区域时将使用的保护密钥。 |
| 标志 | VM_guatt 操作的类型; 必须设置为 任何位置。 |
| 瓦德尔 | 指向 vm_guatt 连接了区域的用户空间地址的指针。 在进行 VM_guatt 调用时, 瓦德尔 (*瓦德尔) 所指向的位置必须为空。 |
描述
VM_guatt 是一个内核服务,用于将使用 vm_galloc 分配的全局内核内存的区域连接到进程的地址空间。 如果调用成功,那么将在 瓦德尔所指向的位置中返回进程地址空间中连接了内存的地址。
钥匙 可以设置为 VM_PRIV 或 VM_UNPRIV。 如果它设置为 VM_PRIV,那么该进程将能够读写附加的区域。 如果它设置为 VM_UNPRIV,那么该进程将无法写入该区域,并且仅当该区域的 vm_galloc 已在启用 V_UREAD 标志的情况下完成时才能够读取该区域。
VM_guatt 附件不会在流程派生中继承。
执行环境
VM_guatt 内核服务只能从进程环境中进行调用。
返回值
| 项 | 描述 |
|---|---|
| 0 | 指示操作成功。 |
| EINVAL | 指示下列其中一个错误:
|
实现细节
VM_guatt 内核服务是基本操作系统 (BOS) 运行时的一部分。