名 前
getauxval − 補 助 ベ ク ト ル か ら 値 を 取 得 す る
書 式
#include <sys/auxv.h>
unsigned long getauxval(unsigned long type);
説 明
getauxval()
関 数 は 補 助 ベ
ク ト ル (auxiliary vector) か
ら 値 を 取 得 す
る 。 補 助 ベ ク
ト ル は 、 プ ロ
グ ラ ム が 実 行
さ れ る 際 に 、
カ ー ネ ル の ELF バ
イ ナ リ ー ロ ー
ダ ー が ユ ー ザ
ー 空 間 に あ る
種 の 情 報 を 渡
す の に 使 わ れ
る 仕 組 み で あ
る 。 補 助 ベ ク
ト ル の 各 エ ン
ト リ ー は 、 こ
の エ ン ト リ ー
を 示 す タ イ プ
と そ の タ イ プ
の 値 の ペ ア で
構 成 さ れ る 。
引 き 数 type が 指
定 さ れ る と 、
getauxval() は 対 応 す
る 値 を 返 す 。
そ れ ぞ れ の type
に 対 し て 返 さ
れ る 値 の 詳 細
を 以 下 に 示 す
。 す べ て の ア
ー キ テ ク チ ャ
ー で す べ て type
値 が 存 在 す る
わ け で は な い
。
AT_BASE プ ロ グ ラ ム
イ ン タ ー プ リ
タ ー (通 常 は 動
的 ロ ー ダ ー ) の
ベ ー ス ア ド レ
ス 。
AT_BASE_PLATFORM 実 プ ラ ッ
ト フ ォ ー ム を
示 す 文 字 列 。
AT_PLATFORM と 異 な る
値 の 場 合 が あ
る 。 (PowerPC の み )
AT_CLKTCK
times(2) の カ ウ ン ト が 行 わ れ る 周 波 数 。 こ の 値 は sysconf(_SC_CLK_TCK) で も 取 得 で き る 。
AT_DCACHEBSIZE デ
ー タ キ ャ ッ シ
ュ の ブ ロ ッ ク
サ イ ズ 。
AT_EGID こ の ス レ ッ
ド の 実 効 グ ル
ー プ ID。
AT_ENTRY 実 行 フ ァ イ
ル の エ ン ト リ
ー ア ド レ ス 。
AT_EUID こ の ス レ ッ
ド の 実 効 ユ ー
ザ ー ID。
AT_EXECFD プ ロ グ ラ ム
の フ ァ イ ル デ
ィ ス ク リ プ タ
ー 。
AT_EXECFN 実 行 プ ロ グ
ラ ム に 使 用 さ
れ た パ ス 名 。
AT_FLAGS フ ラ グ (未 使
用 )。
AT_FPUCW 使 用 さ れ た
FPU 制 御 ワ ー ド (SuperH
ア ー キ テ ク チ
ャ ー の み )。 カ
ー ネ ル が 実 行
し た FPU 初 期 化 に
関 す る 情 報 を
提 供 す る た め
の も の で あ る
。
AT_GID こ の ス レ ッ ド の 実 グ ル ー プ |
ID。 |
AT_HWCAP プ
ロ セ ッ サ ー の
詳 細 な 機 能 (capabilities)
を 示 す 複 数 バ
イ ト か ら な る
ビ ッ ト マ ス ク
へ の ポ イ ン タ
ー で あ る 。 こ
の ビ ッ ト マ ス
ク の 内 容 は ハ
ー ド ウ ェ ア 依
存 で あ る (例 え
ば 、 Intel x86 ア ー キ
テ ク チ ャ ー に
関 す る 詳 細 は
カ ー ネ ル の ソ
ー ス フ ァ イ ル
arch/x86/include/asm/cpufeature.h を 参
照 )。 同 じ 情 報
を 人 が 読 み や
す い 形 に な っ
て い る の が
/proc/cpuinfo で あ る 。
AT_ICACHEBSIZE 命 令 キ ャ
ッ シ ュ の ブ ロ
ッ ク サ イ ズ 。
AT_PAGESZ シ ス テ ム ペ
ー ジ サ イ ズ
(sysconf(_SC_PAGESIZE) が 返 す
値 と 同 じ )。
AT_PHDR 実 行 プ ロ グ
ラ ム の プ ロ グ
ラ ム ヘ ッ ダ ー
の ア ド レ ス 。
AT_PHENT プ ロ グ ラ ム
ヘ ッ ダ ー エ ン
ト リ ー の サ イ
ズ 。
AT_PHNUM プ ロ グ ラ ム
ヘ ッ ダ ー 数 。
AT_PLATFORM こ の プ ロ グ
ラ ム が 実 行 さ
れ て い る ハ ー
ド ウ ェ ア プ ラ
ッ ト フ ォ ー ム
を 特 定 す る 文
字 列 へ の ポ イ
ン タ ー 。 動 的
リ ン カ ー は rpath
値 の 解 釈 を 行
う 際 に こ の 値
を 使 用 す る 。
AT_RANDOM ラ ン ダ ム 値
が 入 っ た 16 バ イ
ト が あ る ア ド
レ ス 。
AT_SECURE こ の 実 行 フ
ァ イ ル を 安 全
に 扱 う 必 要 が
あ る 場 合 に 0 以
外 の 値 に な る
。 一 番 よ く あ
る 場 合 と し て
は 、 0 以 外 の 値
に な る の は 、
そ の プ ロ セ ス
が set−user−ID か
set−group−ID さ れ た プ
ロ グ ラ ム を 実
行 し て い る 場
合 で あ る 。 他
の 場 合 と し て
は 、 Linux Security Module が 有
効 に な っ て い
る 場 合 に も 0 以
外 の 値 と な る
。 こ の 値 が 0 以
外 の 場 合 、 動
的 リ ン カ ー は
特 定 の 環 境 変
数 の 使 用 を 無
効 化 し (ld−linux.so(8)
参 照 )、 glibc は そ の
プ ロ セ ス の 動
作 を 別 の 観 点
で 変 更 す る
(secure_getenv(3) 参 照 )。
AT_SYSINFO
vDSO の シ ス テ ム コ ー ル 関 数 へ の エ ン ト リ ー ポ イ ン ト 。 す べ て の ア ー キ テ ク チ ャ ー で 存 在 す る わ け で は な く 、 ま た 必 要 と い う わ け で も な い (例 え ば x86−64 に は 存 在 し な い )。
AT_SYSINFO_EHDR 仮
想 動 的 共 有 オ
ブ ジ ェ ク ト (vDSO; virtual
Dynamic Shared Object) が 入 っ た
ペ ー ジ の ア ド
レ ス 。 vDSO は 、 特
定 の シ ス テ ム
コ ー ル の 高 速
な 実 装 を 提 供
す る た め に カ
ー ネ ル が 作 成
す る 共 有 オ ブ
ジ ェ ク ト で あ
る 。
AT_UCACHEBSIZE ユ ニ フ ァ
イ ド (unified) キ ャ ッ
シ ュ の ブ ロ ッ
ク サ イ ズ 。
AT_UID こ の ス レ ッ ド の 実 ユ ー ザ ー |
ID。 |
返 り 値
成 功 す る と 、 getauxval() は type に 対 応 す る 値 を 返 す 。 type が 見 つ か ら な い 場 合 に は 0 を 返 す 。
エ ラ ー
ENOENT (glibc 2.19 以 降 )
type に 対 応 す る エ ン ト リ ー が 補 助 ベ ク ト ル に な か っ た 。
バ ー ジ ョ ン
getauxval() 関 数 は glibc バ ー ジ ョ ン 2.16 で 追 加 さ れ た 。
属 性
マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 ) 関 数 getauxval() は ス レ ッ ド セ ー フ で あ る 。
準 拠
こ の 関 数 は 非 標 準 で glibc に よ る 拡 張 で あ る 。
注 意
補 助 ベ ク ト ル の 情 報 を 主 に 使 用 す る の は 、 動 的 ロ ー ダ ー ld−linux.so(8) で あ る 。 補 助 ベ ク ト ル は 、 カ ー ネ ル が 動 的 リ ン カ ー が 通 常 も し く は 常 に 必 要 と す る あ る 意 味 標 準 的 な 情 報 を 伝 え る た め の 便 利 で 効 率 的 な シ ョ ー ト カ ッ ト で あ る 。 い く つ か の 場 合 で は 、 同 じ 情 報 が シ ス テ ム コ ー ル 経 由 で も 取 得 で き る が 、 補 助 ベ ク ト ル を 使 う 方 が コ ス ト が か か ら な い 。 補 助 ベ ク ト ル に は 、 単 に 、 プ ロ セ ス の ア ド レ ス 空 間 の 引 き 数 リ ス ト と 環 境 上 に 存 在 す る だ け で あ る 。 プ ロ グ ラ ム 実 行 時 に LD_SHOW_AUXV 環 境 変 数 を 設 定 す る と 、 プ ロ グ ラ ム に 渡 さ れ た 補 助 ベ ク ト ル を 表 示 す る こ と が で き る 。
$ LD_SHOW_AUXV=1 sleep 1 任 意 の プ ロ セ ス の 補 助 ベ ク ト ル は (フ ァ イ ル の ア ク セ ス 許 可 が あ れ ば ) /proc/PID/auxv 経 由 で 取 得 で き る 。 詳 細 は proc(5) を 参 照 。
バ グ
glibc 2.19 で ENOENT エ ラ ー が 追 加 さ れ る 前 は 、 type が 見 つ か ら な か っ た 場 合 と type に 対 応 す る 値 が 0 だ っ た 場 合 を 明 確 に 区 別 す る 方 法 が な か っ た 。
関 連 項 目
secure_getenv(3), vdso(7), ld−linux.so(8)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。