vm_galloc 内核服务
用途
在 64 位内核中分配全局内存的区域。
语法
描述
vm_galloc 内核服务将从 64 位内核上的内核全局内存池分配内存。 分配大小向上舍入到最接近的 4K 边界。 除非被 V_UREAD 标志覆盖,否则全局内存段的缺省页保护键为 00。
类型字段可能具有以下值,这些值可以组合在一起:
| 项 | 描述 |
|---|---|
| 正在工作 (_V) | 必需。 创建工作存储器段。 |
| V_SYSTEM | 新分配的是一个全局系统区域,不属于任何应用程序。 此区域的存储器引用错误将导致系统崩溃。 |
| V_UREAD | 覆盖缺省页面保护 (00) 并创建缺省页面保护 (01) 的新区域。 |
| V_NOEXEC | 缺省情况下,区域中的页面将没有执行保护。 仅在 POWER4 和更高版本的硬件上受支持。 |
vm_galloc 内核服务旨在用于具有大型数据结构的子系统,对于这些子系统, 克马洛克 不是管理的最佳选择。 内核 克马洛克 堆本身确实驻留在全局内存中。
参数
| 项 | 描述 |
|---|---|
| TYPE | 可能指定的用于控制分配的标志。 |
| 大小 | 指定所需分配的大小 (以字节为单位)。 |
| 埃德尔 | 指向 vm_galloc 将返回已分配存储器的起始地址的位置的指针。 |
执行环境
仅可从 流程环境 调用 vm_galloc 内核服务。
返回值
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功完成。 已分配新区域,并且它的起始地址将在 埃德尔 参数指定的地址处返回。 |
| EINVAL | 指定的大小或类型无效。 |
| ENOSPC | 加洛克 堆中没有足够的空间来执行分配。 |
| ENOMEM | 可用资源不足,无法满足请求。 |