iopl() - Unix 和 Linux 系统调用
Tutorials Point


  Unix 初学者指南
  Unix Shell 编程
  高级 Unix
  Unix 有用参考
  Unix 有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于 TP  

iopl() - Unix 和 Linux 系统调用


previous next AddThis Social Bookmark Button

广告

名称

iopl - 更改 I/O 权限级别

语法

#include <sys/io.h>

int iopl(int level);

描述

iopl() 更改当前进程的 I/O 权限级别,如level中指定。

此调用对于允许 8514 兼容的 X 服务器在 Linux 下运行是必要的。由于这些 X 服务器需要访问所有 65536 个 I/O 端口,因此ioperm() 调用是不够的。

除了授予不受限制的 I/O 端口访问权限外,在更高的 I/O 权限级别运行还允许进程禁用中断。这可能会导致系统崩溃,因此不建议使用。

权限由fork() 和exec() 继承。

普通进程的 I/O 权限级别为 0。

此调用主要用于 i386 架构。在许多其他架构上,它不存在或始终返回错误。

返回值

成功时,返回零。发生错误时,返回 -1,并且errno被相应地设置。

错误

标签描述
EINVAL level 大于 3。
ENOSYS 此调用未实现。
EPERM 调用进程没有足够的权限来调用iopl();需要CAP_SYS_RAWIO 权限。

符合标准

iopl() 是 Linux 特定的,不应在打算移植的进程中使用。

备注

Libc5 将其视为系统调用,并在<unistd.h>中有一个原型。Glibc1 没有原型。Glibc2 在<sys/io.h><sys/perm.h>中都有原型。避免后者,它仅在 i386 上可用。

参见



previous next Printer Friendly

广告


  

广告



广告