IOPERM

Section: Linux Programmer's Manual (2)
Updated: 2017-09-15
Index JM Home Page
 

名前

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/ に書かれている。


関連キーワード

IOPERM, ポート, ioperm, エラー, 設定, sys, pages, ビット, turn, num 

Index

名前
書式
説明
返り値
エラー
準拠
注意
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 13:30:29 GMT, January 09, 2022