as_geth64 内核服务
用途
为指定的地址获取虚拟内存对象的句柄。
语法
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/vmuser.h>
#include <sys/adspace.h>
vmhandle_t as_geth64 (addr64)
unsigned long long addr64;参数
| 项 | 描述 |
|---|---|
| addr64 | 指定应该为其返回相应句柄的虚拟内存地址。 |
描述
as_geth64 内核服务用来获取对应于输入地址 (addr64) 的虚拟内存对象的句柄。 然后,可以将此句柄与 as_att64 或 弗 _att 内核服务配合使用,以使对象可寻址到其他位置。
在最后一次使用该句柄之后,并且在相应地拆离该句柄之后,必须使用 as_puth64 内核服务来指示此事实。 如果未能调用 as_puth64 服务,那么可能导致资源永久不可供复用。
如果返回的句柄指的是虚拟内存段,那么在调用 as_puth64 内核服务之前,该段不会被删除。
如果出于某种原因,已知无法删除虚拟内存对象,那么可以使用 as_getsrval64 内核服务,而不是 as_geth64 服务。
as_geth64 内核服务假定采用固定大小虚拟内存对象的地址空间模型。
对于 32 位和 64 位用户地址空间,此服务都将正常运行。 它也将适用于内核进程 (克普罗克斯)。
注: 此服务仅在当前进程的地址空间上运行。 不允许它在另一个地址空间上运行。
执行环境
as_geth64 内核服务只能从进程环境中进行调用。
返回值
成功完成后,此例程将返回相应的句柄。
发生错误时,此例程返回 sys/seg.h中定义的值 INVLSID。 这是由超出范围的地址引起的。
错误包括: 输入地址超出范围。