Manpages

名 前

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 ポ ー ト を 指 定 で き る 。 ア ク セ ス 権 は fork(2) で 作 成 さ れ た 子 プ ロ セ ス に は 継 承 さ れ な い 。 子 プ ロ セ ス で は 、 fork(2) の 後 で 必 要 な ア ク セ ス 権 を 有 効 に し な け れ ば な ら な い 。 execve(2) の 前 後 で ア ク セ ス 権 は 保 存 さ れ る 。 こ の 機 能 は 非 特 権 プ ロ グ ラ ム に ポ ー ト へ の ア ク セ ス 権 を 与 え る の に 使 用 で き る 。 こ の シ ス テ ム コ ー ル は ほ と ん ど i386 ア ー キ テ ク チ ャ ー の た め だ け の も の で あ る 。 そ の 他 の 多 く の ア ー キ テ ク チ ャ ー で は 存 在 し な い か 、 常 に エ ラ ー を 返 す 。

返 り 値

成 功 し た 場 合 は 0 が 返 さ れ る 。 エ ラ ー の 場 合 は −1 が 返 さ れ 、 errno が 適 切 に 設 定 さ れ る 。

エ ラ ー

EINVAL

from ま た は num の 値 が 不 正 で あ る 。

EIO

(PowerPC で ) こ の シ ス テ ム コ ー ル は サ ポ ー ト し て い な い 。

ENOMEM

メ モ リ ー 不 足 。

EPERM 呼 び 出 し 元 ス レ ッ ド に 十 分 な 権 限 が な か っ た 。

準 拠

ioperm() は Linux 特 有 の 関 数 で あ り 、 移 植 を 意 図 し た プ ロ グ ラ ム で 使 用 し て は な ら な い 。

注 意

/proc/ioports フ ァ イ ル に は 、 現 在 こ の シ ス テ ム に 割 り 当 て ら れ て い る I/O ポ ー ト が 表 示 さ れ る 。

glibc2 に は <sys/io.h><sys/perm.h> の 両 方 に ioperm() の プ ロ ト タ イ プ が あ る 。 後 者 は i386 の み で 利 用 可 能 な の で 、 使 用 す べ き で は な い 。

関 連 項 目

iopl(2), outb(2), capabilities(7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。