linuxのメモ

Linux kernelの実装を解説していきます (対象ver 4.5)

vdso

vDSO - gtod

概要 vsyscall_gtod_data型のポインタを参照するためのマクロ 詳細 VVAR()にvsyscall_gtod_dataを引数として渡し、DECLARE_VVAR()で宣言されたシンボルにアクセスする

vDSO - EMIT_VVAR()

概要 vDSOで参照するメモリのシンボルを定義する 詳細 リンカスクリプト内でシンボルを定義し、指定されたサイズ分のアドレスを確保する このマクロを呼び出すvvar.hはリンカスクリプト内でincludeされるため、コンパイル可能な形で展開することができる

vDSO - DECLARE_VVAR()

概要 vDSOで参照する変数のメモリアドレスを確保する 詳細 引数として以下の値を取る 変数のoffsetを示す : offset 変数の型を示す : type 変数名を示す : name この時、offsetとnameを引数として*1EMIT_VVAR()マクロを展開する 尚、__VVAR_KERNEL_LDSが定義…

vDSO - VVAR()

概要 DECLARE_VVAR()で定義された変数を参照する 詳細 引数として与えられた文字列にvvar_のprefixを付けて展開し、DECLARE_VVAR()で定義された変数を参照する