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