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

名前

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

書式

       #include <sys/io.h>

       int iopl(int level);

説明

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

       この関数は 8514 互換の X サーバを Linux で動作させるために必要である。 なぜならこの X サー
       バは 65536 個の I/O ポート全てへのアクセスを要求するので ioperm(2)  関数では不十分だからで
       ある。

       より高い I/O 特権レベルでの動作をさせることによって I/O ポートアクセスの制限を解除すること
       に加えて、プロセスが割り込みを  無効にすることもできるようになる。この機能は時としてシステ
       ムの破壊を もたらすので勧められない。

       fork(2)  や exec(2)  を行った場合、特権は継承される。

       通常のプロセスの I/O 特権レベルは 0 である。

       このシステムコールはほとんど i386 アーキテクチャーのためだけのものである。  その他の多くの
       アーキテクチャーでは存在しないか、常にエラーを返す。

返り値

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

エラー

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

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

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

準拠

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

注意

       libc5 ではシステムコールとして扱い <unistd.h> にプロトタイプが存在している。 glibc1 にはプ
       ロトタイプは存在していない。  glibc2  は <sys/io.h><sys/perm.h> の両方にプロトタイプを
       持っている。 後者は i386 のみで利用可能なので、使用すべきではない。

関連項目

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

この文書について

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