IOPERM
Section: Linux Programmer's Manual (2)
Updated: 2007-06-15
Index
JM Home Page
roff page
名前
ioperm - ポートの入出力許可を設定する
書式
#include <unistd.h>
/* for libc5 */
#include <sys/io.h>
/* for glibc */
int ioperm(unsigned long from, unsigned long num, int turn_on);
説明
ioperm()
は、引き数 from の I/O ポートアドレスから
num バイト分の領域に対する、呼び出し元プロセスの
アクセス許可ビットを、turn_on に設定する。
turn_on が 0 以外の場合、呼び出し元プロセスは特権
(CAP_SYS_RAWIO)
を持っていなければならない。
この方法で設定できるのは 0x3ff 番地までの I/Oポートに限られる。
これよりも大きなアドレスのポートに対しては
iopl(2)
関数を使わなければならない。
アクセス権は
fork(2)
で作成された子プロセスには継承されない。
execve(2)
の前後でアクセス権は保存される。この機能は
非特権プログラムにポートへのアクセス権を
与えるのに使用できる。
このシステムコールはほとんど i386 アーキテクチャのためだけのものである。
その他の多くのアーキテクチャでは存在しないか、常にエラーを返す。
返り値
成功した場合には 0 を返す。エラーの場合に -1 を返し、
errno
に適切な値を設定する。
エラー
- EINVAL
-
from
または
num
の値が不正である。
- EIO
-
(PowerPC で) このシステムコールはサポートしていない。
- ENOMEM
-
メモリ不足。
- EPERM
-
呼び出し元プロセスに十分な権限がなかった。
準拠
ioperm()
は Linux 特有の関数であり、移植を意図したプログラムで
使用してはならない。
注意
libc5 ではシステムコールとして扱い
<unistd.h>
にプロトタイプが存在している。
glibc1 にはプロトタイプは存在しない。
glibc2 は
<sys/io.h>
と
<sys/perm.h>
の両方にプロトタイプを持っている。
後者は i386 のみで利用可能なので、使用すべきではない。
関連項目
iopl(2),
capabilities(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:47 GMT, November 19, 2007