Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all bug

名前

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