linuxのメモ

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

アドレッシング - __pmd()

概要

pmdval_t型の値をpmd_t型に変換する

詳細

_ CONFIG_PARAVIRTCONFIG_PGTABLE_LEVELS__PAGETABLE_PMD_FOLDED_の値によって以下のように処理が異なる

  • CONFIG_PARAVIRTが定義されていてCONFIG_PGTABLE_LEVELSの値が3以上の場合
    • PVOP_CALLEEx()valが32bitの場合は引数を1つ、64bitモードの場合は第1引数valの下位32bitを、第2引数に上位32bitの2つの値を渡してpv_mmu_ops.make_pmd*1を実行しpmdval_t型の値を取得する
    • 取得した値をpmd_t型の値に変換して返す
  • CONFIG_PARAVIRT__PAGETABLE_PMD_FOLDEDが未定義の場合
  • 上記以外の場合
    • __pud()valpud_t型に変換した値をpmd_t型に変換して返す

*1:この関数はコンパイル時にPTE_IDENTで初期化される