Manpages

名 前

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