ioperm - システムコールの説明 - Linux コマンド集 一覧表
名前
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
に設定する。
ioperm
() の使用にはスーパユーザー権限が必要である。
この方法で設定できるのは 0x3ff 番地までの I/Oポートに限られる。
これよりも大きなアドレスのポートに対しては
iopl
()関数を使わなければならない。
fork
()した場合はアクセス権は継承されないが、
exec
()の場合は継承される。
これはスーパユーザー権限を持たないプロセスにポートへのアクセス権を
与えるのに使用できる。
このシステムコールはほとんど i386 アーキテクチャのためだけのものである。
その他の多くのアーキテクチャでは存在しないか、常にエラーを返す。
返り値
成功した場合には 0 を返す。エラーの場合に -1 を返し、 errno に適切な値を設定する。
エラー
- EINVAL
- from または num の値が不正である。
- EIO
- (PPC で)このシステムコールはサポートしていない。
- EPERM
- 呼び出し元プロセスに ioperm ()を呼び出すのに十分な権限がなかった。 ioperm ()を呼び出すには CAP_SYS_RAWIO ケーパビリティが必要である。
準拠
ioperm () は Linux 特有の関数であり、移植を意図したプログラムで 使用してはならない。
注意
libc5 ではシステムコールとして扱い <unistd.h> にプロトタイプが存在している。 glibc1 にはプロトタイプは存在しない。 glibc2 は <sys/io.h> と <sys/perm.h> の両方にプロトタイプを持っている。 後者は i386 のみで利用可能なので、使用すべきではない。