备注

Glibc2在和中都有一个原型。避免使用后者,它仅在i386上可用。

在Linux 5.5之前,iopl()允许线程以更高的I / O特权级别运行时禁用中断。这可能会使系统崩溃,因此不建议这样做。

在Linux 3.7之前,在某些体系结构(例如i386)上,权限由fork(2)产生的子代继承,并在execve(2)之间保留。此行为在Linux 3.7中被无意中更改,并且不会恢复。

另外参见

ioperm(2),outb(2),功能(7)

名称

iopl-更改I / O特权级别

IOPL - Linux手册页

Linux程序员手册 第2部分
更新日期: 2020-08-13

返回值

成功时,返回零。如果出错,则返回-1,并正确设置errno。

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

语法

#包括

int iopl(int level);

遵循规范

iopl()是特定于Linux的,不应在旨在可移植的程序中使用。

说明

iopl()更改调用线程的I / O特权级别,该级别由级别中的两个最低有效位指定。

普通线程的I / O特权级别为0。权限从父级继承到子级。

不建议使用此调用,该调用比ioperm(2)慢得多,并且仅提供给需要访问所有65536 I / O端口的较旧X服务器。它主要用于i386体系结构。在许多其他体系结构上,它不存在或将始终返回错误。

错误说明

EINVAL
级别大于3。
ENOSYS
此调用未实现。
EPERM
调用线程没有足够的特权来调用iopl();需要CAP_SYS_RAWIO功能才能将I / O特权级别提高到其当前值之上。
日期:2019-08-20 17:58:54 来源:oir作者:oir