Manpages

名 前

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