アドレッシング - pud_page_vaddr()
アドレッシング - pmd_val()
概要
ページミドルディレクトリの値を返す
詳細
pmd_t型の値valを引数として受け取り、CONFIG_PARAVIRTと__PAGETABLE_PMD_FOLDED、CONFIG_PGTABLE_LEVELSの値によって以下のように処理が異なる
- CONFIG_PARAVIRTが有効でCONFIG_PGTABLE_LEVELSが3以上
- PVOP_CALLEEx()にvalが32bitの場合は引数を1つ、64bitモードの場合は第1引数valの下位32bitを、第2引数に上位32bitの2つの値を渡してpv_mmu_ops.pmd_val*1を実行しpmdval_t型の値を返す
- CONFIG_PARAVIRTが無効で__PAGETABLE_PMD_FOLDEDが有効
- native_pmd_val()を実行しpmdval_t型の値を返す
- それ以外
アドレッシング - pmd_pfn_mask()
概要
ページミドルディレクトリのアドレスマスクを取得する
詳細
native_pmd_val()でページミドルディレクトリの値を取得し、_PAGE_PSEフラグが立っていた場合はPATが有効なためPHYSICAL_PMD_PAGE_MASKを、それ以外の場合はPTE_PFN_MASKを返す
アドレッシング - pud_pfn_mask()
概要
ページアッパーディレクトリのアドレスマスクを取得する
詳細
native_pud_val()でページアッパーディレクトリの値を取得し、_PAGE_PSEフラグが立っていた場合はPATが有効なためPHYSICAL_PUD_PAGE_MASKを、それ以外の場合はPTE_PFN_MASKを返す
ページテーブルエントリ (PTE: Page Table Entry)
概要
ページテーブルエントリ(PTE)のフラグを示すマクロ
詳細
bit番号 | マクロ | フラグ |
---|---|---|
0 | _PAGE_PRESENT | 0: 物理メモリに存在しない 1: 存在する |
1 | _PAGE_RW | 0: R ONLY 1: R/W |
2 | _PAGE_USER | 0: カーネルモード 1: ユーザーモード |
3 | _PAGE_PWT | 0: キャッシュのライトバックが有効 1: 無効 |
4 | _PAGE_PCD | 0: ページキャッシュが有効 1: 無効 |
5 | _PAGE_ACCESSED | 0: ページアクセス無し 1: アクセス済み |
6 | _PAGE_DIRTY | 0: ページの内容が変更されていない 1: 変更済み |
7 | _PAGE_PSE, _PAGE_PAT | ページ属性テーブル(PAT)で使用 |
8 | _PAGE_GLOBAL | 0: グローバルページとして設定する 1: 設定しない |
9 | _PAGE_SOFTW1, _PAGE_SPECIAL, _PAGE_CPA_TEST | ソフトウェア管理フラグ |
10 | _PAGE_SOFTW2 | ソフトウェア管理フラグ |
11 | _PAGE_HIDDEN, _PAGE_SOFT_DIRTY | ソフトウェア管理フラグ |
アドレッシング - pgd_none()
概要
ページグローバルディレクトリが無効なアドレスか確認する
詳細
PTRS_PER_PUDとCONFIG_PGTABLE_LEVELSの値によって以下のように処理が異なる
- PTRS_PER_PUDの値が1以上の場合
- CONFIG_PGTABLE_LEVELSの値が3を超えるている場合
- native_pgd_val()で取得したページグローバルディレクトリの値が有効な値なら0、それ以外の場合は1を返す
- それ以外
- 常に0を返す