名 前
iopl − I/O 特 権 レ ベ ル を 変 更 す る
書 式
#include <sys/io.h>
int iopl(int level);
説 明
iopl() は 呼 び 出 し 元 の プ ロ セ ス の I/O 特 権 レ ベ ル を level の 下 位 2 ビ ッ ト で 指 定 し た 値 に 変 更 す る 。 こ の 関 数 は 8514 互 換 の X サ ー バ を Linux で 動 作 さ せ る た め に 必 要 で あ る 。 な ぜ な ら こ の X サ ー バ は 65536 個 の I/O ポ ー ト 全 て へ の ア ク セ ス を 要 求 す る の で ioperm(2) 関 数 で は 不 十 分 だ か ら で あ る 。 よ り 高 い I/O 特 権 レ ベ ル で の 動 作 を さ せ る こ と に よ っ て I/O ポ ー ト ア ク セ ス の 制 限 を 解 除 す る こ と に 加 え て 、 プ ロ セ ス が 割 り 込 み を 無 効 に す る こ と も で き る よ う に な る 。 こ の 機 能 は 時 と し て シ ス テ ム の 破 壊 を も た ら す の で 勧 め ら れ な い 。
fork(2) や exec(2) を 行 っ た 場 合 、 特 権 は 継 承 さ れ る 。 通 常 の プ ロ セ ス の I/O 特 権 レ ベ ル は 0 で あ る 。 こ の シ ス テ ム コ ー ル は ほ と ん ど i386 ア ー キ テ ク チ ャ ー の た め だ け の も の で あ る 。 そ の 他 の 多 く の ア ー キ テ ク チ ャ ー で は 存 在 し な い か 、 常 に エ ラ ー を 返 す 。
返 り 値
成 功 し た 場 合 は 0 が 返 さ れ る 。 エ ラ ー の 場 合 は −1 が 返 さ れ 、 errno が 適 切 に 設 定 さ れ る 。
エ ラ ー
EINVAL 引 き 数 |
level が 3 よ り 大 き い 。 |
||
ENOSYS こ の シ ス |
テ ム コ ー ル は 実 装 さ れ て い な い 。
EPERM 呼 び 出 し 元 プ ロ セ ス に |
iopl() を 呼 び 出 す の に 十 分 な 権 限 が な か っ |
た 。 I/O 特 権 レ ベ ル を 現 在 の 値 よ り 上 げ る に は CAP_SYS_RAWIO ケ ー パ ビ リ テ ィ が 必 要 で あ る 。
準 拠
ipc() は Linux 特 有 で あ り 、 移 植 を 意 図 し た プ ロ グ ラ ム で は 使 用 し て は い け な い 。
注 意
libc5 で は シ ス テ ム コ ー ル と し て 扱 い <unistd.h> に プ ロ ト タ イ プ が 存 在 し て い る 。 glibc1 に は プ ロ ト タ イ プ は 存 在 し て い な い 。 glibc2 は <sys/io.h> と <sys/perm.h> の 両 方 に プ ロ ト タ イ プ を 持 っ て い る 。 後 者 は i386 の み で 利 用 可 能 な の で 、 使 用 す べ き で は な い 。
関 連 項 目
ioperm(2), outb(2), capabilities(7)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。