Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all bug

名前

       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 が 0 以外の場合、指定されたビットに対応す
       る許可が有効になる。 turn_on が 0 以外の場合、呼び出し元プロセスは特権 (CAP_SYS_RAWIO)  を
       持っていなければならない。

       Linux 2.6.8 より前のバージョンでは、この方法で設定できるのは 0x3ff 番地までの  I/Oポートに
       限られていた。これよりも大きなアドレスのポートに対しては  iopl(2) 関数を使わなければならな
       かった。Linux 2.6.8 以降では、65,536 個の I/O ポートを指定できる。

       アクセス権は fork(2)  で作成された子プロセスには継承されない。子プロセスでは、fork(2) の後
       で必要なアクセス権を有効にしなければならない。   execve(2)    の前後でアクセス権は保存され
       る。この機能は 非特権プログラムにポートへのアクセス権を 与えるのに使用できる。

       このシステムコールはほとんど  i386  アーキテクチャのためだけのものである。  その他の多くの
       アーキテクチャでは存在しないか、常にエラーを返す。

返り値

       成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

       EINVAL from または num の値が不正である。

       EIO    (PowerPC で) このシステムコールはサポートしていない。

       ENOMEM メモリ不足。

       EPERM  呼び出し元スレッドに十分な権限がなかった。

準拠

       ioperm()  は Linux 特有の関数であり、移植を意図したプログラムで 使用してはならない。

注意

       /proc/ioports ファイルには、現在このシステムに割り当てられている I/O ポートが表示される。

       libc5 ではシステムコールとして扱い <unistd.h> にプロトタイプが存在している。 glibc1 にはプ
       ロトタイプは存在しない。 glibc2 は <sys/io.h><sys/perm.h> の両方にプロトタイプを持って
       いる。 後者は i386 のみで利用可能なので、使用すべきではない。

関連項目

       iopl(2), outb(2), capabilities(7)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。