.\" Copyright 2012 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" See also https://lwn.net/Articles/519085/ .\" .\" FIXME glibc 2.18 added AT_HWCAP2, which needs to e documented .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH GETAUXVAL 3 2014\-08\-19 GNU "Linux Programmer's Manual" .SH 名前 getauxval \- 補助ベクトルから値を取得する .SH 書式 .nf \fB#include \fP .sp \fBunsigned long getauxval(unsigned long \fP\fItype\fP\fB);\fP .fi .SH 説明 \fBgetauxval\fP() 関数は補助ベクトル (auxiliary vector) から値を取得する。 補助ベクトルは、 プログラムが実行される際に、 カーネルの ELF バイナリーローダーがユーザー空間にある種の情報を渡すのに使われる仕組みである。 補助ベクトルの各エントリーは、 このエントリーを示すタイプとそのタイプの値のペアで構成される。 引き数 \fItype\fP が指定されると、 \fBgetauxval\fP() は対応する値を返す。 それぞれの \fItype\fP に対して返される値の詳細を以下に示す。 すべてのアーキテクチャーですべて \fItype\fP 値が存在するわけではない。 .TP \fBAT_BASE\fP プログラムインタープリター (通常は動的ローダー) のベースアドレス。 .TP \fBAT_BASE_PLATFORM\fP 実プラットフォームを示す文字列。 \fBAT_PLATFORM\fP と異なる値の場合がある。 (PowerPC のみ) .TP \fBAT_CLKTCK\fP \fBtimes\fP(2) のカウントが行われる周波数。 この値は \fIsysconf(_SC_CLK_TCK)\fP でも取得できる。 .TP \fBAT_DCACHEBSIZE\fP データキャッシュのブロックサイズ。 .TP \fBAT_EGID\fP このスレッドの実効グループ ID。 .TP \fBAT_ENTRY\fP 実行ファイルのエントリーアドレス。 .TP \fBAT_EUID\fP このスレッドの実効ユーザー ID。 .TP \fBAT_EXECFD\fP プログラムのファイルディスクリプター。 .TP \fBAT_EXECFN\fP 実行プログラムに使用されたパス名。 .TP \fBAT_FLAGS\fP フラグ (未使用)。 .TP \fBAT_FPUCW\fP 使用された FPU 制御ワード (SuperH アーキテクチャーのみ)。 カーネルが実行した FPU 初期化に関する情報を提供するためのものである。 .TP \fBAT_GID\fP このスレッドの実グループ ID。 .TP \fBAT_HWCAP\fP プロセッサーの詳細な機能 (capabilities) を示す複数バイトからなるビットマスクへのポインターである。 このビットマスクの内容はハードウェア依存である (例えば、 Intel x86 アーキテクチャーに関する詳細はカーネルのソースファイル \fIarch/x86/include/asm/cpufeature.h\fP を参照)。 同じ情報を人が読みやすい形になっているのが \fI/proc/cpuinfo\fP である。 .TP \fBAT_ICACHEBSIZE\fP .\" .TP .\" .BR AT_IGNORE .\" .TP .\" .BR AT_IGNOREPPC .\" .TP .\" .BR AT_NOTELF 命令キャッシュのブロックサイズ。 .TP \fBAT_PAGESZ\fP システムページサイズ (\fIsysconf(_SC_PAGESIZE)\fP が返す値と同じ)。 .TP \fBAT_PHDR\fP 実行プログラムのプログラムヘッダーのアドレス。 .TP \fBAT_PHENT\fP プログラムヘッダーエントリーのサイズ。 .TP \fBAT_PHNUM\fP プログラムヘッダー数。 .TP \fBAT_PLATFORM\fP このプログラムが実行されているハードウェアプラットフォームを特定する文字列へのポインター。 動的リンカーは \fIrpath\fP 値の解釈を行う際にこの値を使用する。 .TP \fBAT_RANDOM\fP ランダム値が入った 16 バイトがあるアドレス。 .TP \fBAT_SECURE\fP この実行ファイルを安全に扱う必要がある場合に 0 以外の値になる。 一番よくある場合としては、 0 以外の値になるのは、 そのプロセスが set\-user\-ID か set\-group\-ID されたプログラムを実行している場合である。 他の場合としては、 Linux Security Module が有効になっている場合にも 0 以外の値となる。 この値が 0 以外の場合、 動的リンカーは特定の環境変数の使用を無効化し (\fBld\-linux.so\fP(8) 参照)、 glibc はそのプロセスの動作を別の観点で変更する (\fBsecure_getenv\fP(3) 参照)。 .TP \fBAT_SYSINFO\fP vDSO のシステムコール関数へのエントリーポイント。すべてのアーキテクチャーで存在するわけではなく、 また必要というわけでもない (例えば x86\-64 には存在しない)。 .TP \fBAT_SYSINFO_EHDR\fP 仮想動的共有オブジェクト (vDSO; virtual Dynamic Shared Object) が入ったページのアドレス。 vDSO は、 特定のシステムコールの高速な実装を提供するためにカーネルが作成する共有オブジェクトである。 .TP \fBAT_UCACHEBSIZE\fP ユニファイド (unified) キャッシュのブロックサイズ。 .TP \fBAT_UID\fP このスレッドの実ユーザー ID。 .SH 返り値 成功すると、 \fBgetauxval\fP() は \fItype\fP に対応する値を返す。 \fItype\fP が見つからない場合には 0 を返す。 .SH エラー .TP \fBENOENT\fP (glibc 2.19 以降) .\" commit b9ab448f980e296eac21ac65f53783967cc6037b \fItype\fP に対応するエントリーが補助ベクトルになかった。 .SH バージョン \fBgetauxval\fP() 関数は glibc バージョン 2.16 で追加された。 .SH 属性 .SS "マルチスレッディング (pthreads(7) 参照)" 関数 \fBgetauxval\fP() はスレッドセーフである。 .SH 準拠 この関数は非標準で glibc による拡張である。 .SH 注意 補助ベクトルの情報を主に使用するのは、 動的ローダー \fBld\-linux.so\fP(8) である。 補助ベクトルは、 カーネルが動的リンカーが通常もしくは常に必要とするある意味標準的な情報を伝えるための便利で効率的なショートカットである。 いくつかの場合では、 同じ情報がシステムコール経由でも取得できるが、 補助ベクトルを使う方がコストがかからない。 補助ベクトルには、 単に、 プロセスのアドレス空間の引き数リストと環境上に存在するだけである。 プログラム実行時に \fBLD_SHOW_AUXV\fP 環境変数を設定すると、 プログラムに渡された補助ベクトルを表示することができる。 $ LD_SHOW_AUXV=1 sleep 1 任意のプロセスの補助ベクトルは (ファイルのアクセス許可があれば) \fI/proc/PID/auxv\fP 経由で取得できる。 詳細は \fBproc\fP(5) を参照。 .SH バグ glibc 2.19 で \fBENOENT\fP エラーが追加される前は、 \fItype\fP が見つからなかった場合と \fItype\fP に対応する値が 0 だった場合を明確に区別する方法がなかった。 .SH 関連項目 \fBsecure_getenv\fP(3), \fBvdso\fP(7), \fBld\-linux.so\fP(8) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。