Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
ioperm - ポートの入出力許可を設定する
書式
#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 ポートを指定できる。 Permissions are inherited by the child created by fork(2) (but see NOTES). Permissions are preserved across execve(2); this is useful for giving port access permissions to unprivileged programs. このシステムコールはほとんど i386 アーキテクチャーのためだけのものである。 その他の多くの アーキテクチャーでは存在しないか、常にエラーを返す。
返り値
成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。
エラー
EINVAL from または num の値が不正である。 EIO (PowerPC で) このシステムコールはサポートしていない。 ENOMEM メモリー不足。 EPERM 呼び出し元スレッドに十分な権限がなかった。
準拠
ioperm() は Linux 特有の関数であり、移植を意図したプログラムで 使用してはならない。
注意
/proc/ioports ファイルには、現在このシステムに割り当てられている I/O ポートが表示される。 Before Linux 2.4, permissions were not inherited by a child created by fork(2). glibc2 には <sys/io.h> と <sys/perm.h> の両方に ioperm() のプロトタイプがある。 後者は i386 のみで利用可能なので、使用すべきではない。
関連項目
iopl(2), outb(2), capabilities(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。