IOPERM - Linux手册页

时间:2019-08-20 17:58:54  来源:igfitidea点击:

Linux程序员手册 第2部分
更新日期: 2017-09-15

名称

ioperm-设置端口输入/输出权限

语法

#include / * for glibc * /

int ioperm(unsigned long from,无符号长整数,int turn_on);

说明

ioperm()将调用线程的端口访问权限位设置为从端口地址from开始的num位。如果turn_on不为零,则启用对指定位的权限;否则禁用。如果turn_on不为零,则调用线程必须具有特权(CAP_SYS_RAWIO)。

在Linux 2.6.8之前,只能以这种方式指定第一个0x3ff I / O端口。对于更多端口,必须使用iopl(2)系统调用(级别参数为3)。从Linux 2.6.8开始,可以指定65,536个I / O端口。

权限由fork(2)创建的子级继承(但请参见NOTES)。权限在execve(2)中保留;这对于将端口访问权限授予非特权程序很有用。

该调用主要用于i386体系结构。在许多其他体系结构上,它不存在或将始终返回错误。

返回值

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

错误说明

EINVAL
from或num的值无效。
EIO
(在PowerPC上)不支持此呼叫。
ENOMEM
内存不足。
EPERM
调用线程的特权不足。

遵循规范

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

备注

/ proc / ioports文件显示了系统上当前分配的I / O端口。

在Linux 2.4之前,权限不是由fork(2)创建的子代继承的。

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

另外参见

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

出版信息

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