アドレッシング - pud_present()
概要
ページアッパーディレクトリが物理メモリ上に存在するか確認する
詳細
CONFIG_PGTABLE_LEVELSの値によって以下のように処理が異なる
- 2以下
- 1を返す
- それ以外
- pud_flags()で取得したページアッパーディレクトリのフラグと_PAGE_PRESENTの論理積の結果を返す
アドレッシング - pud_flags()
概要
ページアッパーディレクトリに設定されているフラグを取得する
詳細
native_pud_val()で取得したページアッパーディレクトリのアドレスとpud_flags_mask()で取得したページアッパーディレクトリのフラグマスクの論理積を返す
アドレッシング - pud_flags_mask()
概要
ページアッパーディレクトリのフラグマスクを取得する
詳細
pud_pfn_mask()で取得したページアッパーディレクトリのアドレスマスクを反転した値を返すため、アドレス以外のbit値をフラグとして利用できるものとする
アドレッシング - pud_offset()
概要
ページアッパーディレクトリのエントリに該当するアドレスを取得する
詳細
CONFIG_PGTABLE_LEVELSの値によって以下のように処理が異なる
CONFIG_PGTABLE_LEVELSの値が3を超える場合
- pgd_page_vaddr()で取得したページグローバルディレクトリの仮想アドレスに、pud_index()で取得したページアッパーディレクトリのインデックスを加算することで、ページアッパーディレクトリのエントリが保存されているアドレスのオフセットを取得する
それ以外
- ページグローバルディレクトリが存在しないため引数で取得したpgd_tのポインタをpud_tのポインタに変換して返す