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