ltpin 内核服务

用途

锁定系统 (内核) 空间中的地址范围,并为关联的页面释放页面空间。

语法

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

参数

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

描述

LTPin (长期 pin) 内核服务会将系统 (内核) 地址空间中 地址长度 参数指定的地址范围所触及的实内存页置顶。 它会锁定实内存页,以确保此地址范围内的内存引用不会发生缺页故障。 LTPin 内核服务会使每个实内存页面的长期引脚计数递增。 虽然长期或短期引脚计数不为零,但无法从实内存中调页。

LTPin 内核服务可以锁定整个地址范围,也可以不锁定任何地址范围。 系统中只有有限数量的页面被置顶。 如果系统中没有足够的未置顶页面,那么 LTPin 内核服务将返回错误代码。 LTPin 内核服务不是已发布的接口。

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

LTPin 内核服务只能针对系统 (内核) 地址空间内的地址进行调用。

返回值

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