S390_GUARDED_STORAGE - Linux手册页
Section: System Calls (2)
更新日期: 2019-03-06
名称
s390_guarded_storage-使用z / Architecture保护存储设施的操作
语法
#include <asm/guarded_storage.h> int s390_guarded_storage(int command, struct gs_cb *gs_cb);
说明
s390_guarded_storage()系统调用允许对用户空间进程使用保护存储设施(z /体系结构特定的功能)。
受保护的存储功能是一项硬件功能,它允许将多达64个内存区域(从z14开始)标记为受保护;读取带有新引入的" Load Guarded"(LGG)或" Load Logical and Shift Guarded"(LLGFSG)指令的指针将导致对加载的值进行范围检查,并在以下情况之一时调用(先前设置的)用户空间处理程序:守卫区受到影响。
命令参数指示要执行的功能。支持以下命令:
- GS_ENABLE
- 为调用任务启用受保护的存储设施。受保护的存储控制块的初始内容将为全零。启用后,用户空间代码可以使用" Load Guarded Storage Controls"(LGSC)指令(或asm / guarded_storage.h标头中提供的load_gs_cb()函数包装器)加载任意控制块。启用任务后,内核将在上下文切换中保存并恢复受保护存储寄存器的调用内容。
- GS_DISABLE
- 禁止将受保护的存储设施用于呼叫任务。内核将停止保存和恢复受保护存储寄存器的内容,这些寄存器的特定于任务的内容将丢失。
- GS_SET_BC_CB
- 将广播保护存储控制块设置为gs_cb参数中提供的块。每个线程调用此方法,并将特定的受保护存储控制块与调用任务相关联。该控制块将在广播命令GS_BROADCAST中使用。
- GS_CLEAR_BC_CB
- 清除广播保护存储控制块。受保护的存储控制块将不再具有由GS_SET_BC_CB命令建立的关联。
- GS_BROADCAST
- 将广播发送到调用任务的所有线程同级。已建立广播保护存储控制块的每个同级将加载此控制块,并将启用保护存储。广播保护存储控制块已消耗;如果不使用GS_SET_BC_CB刷新存储的控制块,则第二次广播将没有任何效果。
gs_cb参数指定受保护的存储控制块结构的地址,当前仅由GS_SET_BC_CB命令使用。前面提到的所有其他命令都忽略此参数。
返回值
成功时,s390_guarded_storage()的返回值为0。
如果出错,则返回-1,并正确设置errno。
错误说明
- EFAULT
- 命令是GS_SET_BC_CB,并且gs_cb参数指向的受保护存储控制块结构的复制失败。
- EINVAL
- 命令参数中提供的值无效。
- ENOMEM
- 命令是GS_ENABLE或GS_SET_BC_CB之一,并且新的受保护存储控制块的分配失败。
- EOPNOTSUPP
- 硬件不支持受保护的存储功能。
版本
从Linux 4.12开始,此系统调用可用。
遵循规范
此特定于Linux的系统调用仅在s390体系结构上可用。
受保护的存储功能从System z14开始可用。
备注
Glibc不为此系统调用提供包装,请使用syscall(2)对其进行调用。
从第十二版开始的" z /体系结构操作原理"中提供了有关受保护存储设施以及相关指令以及受保护存储控制块和受保护存储事件参数列表结构布局的描述。
gs_cb结构具有字段gsepla(保护存储事件参数列表地址),该字段是指向保护存储事件参数列表结构的用户空间指针(在gseha字段中包含上述事件处理程序的地址)及其布局可在asm / guarded_storage.h标头中作为gs_epl结构类型定义使用。
另外参见
系统调用(2)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。