Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       iopl - I/O 特権レベルを変更する

書式

       #include <sys/io.h>

       int iopl(int level);

説明

       iopl()   は呼び出し元のスレッドの I/O 特権レベルを level の下位 2 ビットで指定した値に変更
       する。

       通常のスレッドの I/O 特権レベルは 0 である。許可 (permissions) は親から子に継承される。

       This call is deprecated, is significantly slower than ioperm(2), and is only provided  for
       older  X  servers  which require access to all 65536 I/O ports.  It is mostly for the i386
       architecture.  On many other architectures it does not exist  or  will  always  return  an
       error.

返り値

       成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

       EINVAL 引数 level が 3 より大きい。

       ENOSYS このシステムコールは実装されていない。

       EPERM  呼び出し元スレッドに  iopl()  を呼び出すのに十分な権限がなかった。 I/O 特権レベルを
              現在の値より上げるには CAP_SYS_RAWIO ケーパビリティが必要である。

準拠

       ipc()  は Linux 特有であり、 移植を意図したプログラムでは 使用してはいけない。

注意

       glibc2 は <sys/io.h><sys/perm.h> の両方にプロトタイプを持っている。 後者は i386 のみで
       利用可能なので、使用すべきではない。

       Prior  to  Linux  5.5  iopl()  allowed the thread to disable interrupts while running at a
       higher I/O privilege level.  This will probably crash the system, and is not recommended.

       Prior to Linux 3.7, on some architectures (such as i386), permissions  were  inherited  by
       the  child  produced  by  fork(2)  and were preserved across execve(2).  This behavior was
       inadvertently changed in Linux 3.7, and won't be reinstated.

関連項目

       ioperm(2), outb(2), capabilities(7)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。