IOPL
Section: Linux Programmer's Manual (2)
Updated: 2004-05-27
Index
JM Home Page
roff page
名前
iopl - I/O 特権レベルを変更する
書式
#include <sys/io.h>
int iopl(int level);
説明
iopl()
はこのプロセスの I/O 特権レベルを
level
で指定した値に変更する。
この関数は 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
-
このシステムコールは実装されていない。
呼び出し元プロセスに
iopl()
を呼び出すのに十分な権限がなかった。
iopl()
を呼び出すには
CAP_SYS_RAWIO
ケーパビリティが必要である。
準拠
iopl()
は Linux 特有の関数であり、移植を意図したプログラムで
使用してはならない。
注意
libc5 ではシステムコールとして扱い
<unistd.h>
にプロトタイプが存在している。
glibc1 にはプロトタイプは存在していない。
glibc2 は
<sys/io.h>
と
<sys/perm.h>
の両方にプロトタイプを持っている。
後者は i386 のみで利用可能なので、使用すべきではない。
関連項目
ioperm(2),
capabilities(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:47 GMT, November 19, 2007