kazmax - Linux で自宅サーバー

ioperm - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. エラー
  6. 準拠
  7. 注意
  8. 関連項目

名前

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 のみで利用可能なので、使用すべきではない。

関連項目