锁定内核服务

用途

锁定系统 (内核) 空间中的地址范围。

语法

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/pin.h>
int pin ( addr,  length)
caddr_t  addr;
int length;

参数

描述
addr 指定要置顶的第一个字节的地址。
长度 指定要置顶的字节数。

描述

服务用于锁定系统 (内核) 地址空间中由 地址长度 参数指定的地址范围所触及的实内存页。 它会锁定实内存页,以确保此地址范围内的内存引用不会发生缺页故障。 服务会增加每个实内存页面的锁钉计数。 虽然锁钉计数为非零值,但页面不能从实内存中调页。

例程将锁定整个地址范围或者不锁定任何地址范围。 在系统中只能锁定有限的页面数。 如果系统中没有足够的未置顶页面,那么 服务会返回错误代码。

注: 如果请求的范围未在页面边界上对齐,那么超出此范围的内存也会被置顶。 这是因为操作系统一次只置顶整个页面。

服务只能针对系统 (内核) 地址空间中的地址进行调用。 应该将 克斯门潘 服务用于内核或用户空间内的地址。

执行环境

仅可从 流程环境 调用 内核服务。

返回值

描述
重大安全事件数量 指示成功完成。
EINVAL 指示 长度 参数的值是负数或 0。 否则,未定义从第一个要置顶的字节的地址 ( 地址 参数) 开始并针对 长度 参数指定的字节数进行扩展的内存区域。
EIO 指示在引用数据时发生永久 I/O 错误。
ENOMEM 指示 服务由于实内存不足或超过系统范围的锁钉计数而无法锁钉。
ENOSPC 指示文件系统或调页空间不足。