typedef struct { pgdval_t pgd; } pgd_t; static inline pgd_t native_make_pgd(pgdval_t val) { return (pgd_t) { val }; } static inline pgdval_t native_pgd_val(pgd_t pgd) { return pgd.pgd; } static inline pgdval_t pgd_flags(pgd_t pgd) { return native_pgd_val(pgd) & PTE...
PGD为顶级页表,是一个pgd_t数据类型(定义在文件linux/include/page.h中)的数组,每个数组元素指向一个中间页目录;PMD为二级页表,是一个pmd_t数据结构的数组,每个数组元素指向一个页表;PTE则是页表,是一个pte_t数据类型的数组,每个元素中含有物理地址。 为了应用上的灵活,Linux使用一系列的宏来掩盖各种平台的细节...
typedef struct{pgdval_t pgd;}pgd_t;staticinline pgd_tnative_make_pgd(pgdval_t val){return(pgd_t){val};}staticinline pgdval_tnative_pgd_val(pgd_t pgd){returnpgd.pgd;}staticinline pgdval_tpgd_flags(pgd_t pgd){returnnative_pgd_val(pgd)&PTE_FLAGS_MASK;}#ifCONFIG_PGTABLE_LEVELS>3ty...
void __init early_fixmap_init(void){pgd_t *pgd;pud_t *pud;pmd_t *pmd;unsigned long addr = FIXADDR_START; /* (1) */ pgd = pgd_offset_k(addr); /* (2) */if (CONFIG_PGTABLE_LEVELS > 3 &&!(pgd_none(*pgd) || pgd_page_paddr(*pgd) == __pa_symbol(bm_pud))) {/** ...
2.1.2 pgd_t、pmd_t、pud_t和pte_t 参照/arch/x86/include/asm/pgtable_types.h typedefstruct{pgdval_tpgd; }pgd_t;staticinlinepgd_tnative_make_pgd(pgdval_tval){return(pgd_t) { val }; }staticinlinepgdval_tnative_pgd_val(pgd_tpgd){returnpgd.pgd; ...
页面目录PGD、中间目录PMD和页面表PT分别是由表项pgd_t、pmd_t和pte_t构成的数组,而这些表项都是数据结构 1 /* 2 * These are used to make use of C type-checking.. 3 */ 4 #if CONFIG_X86_PAE 5 typ
PUD_SHIFT 用来表示 PUD 中的一个页目录项 pud_t 可以映射的物理内存大小(1G)。 PGD_SHIFT 用来表示 PGD 中的一个页目录项 pgd_t 可以映射的物理内存大小(512G)。 这些XXX_SHIFT 常量在内核中除了可以表示对应页目录项映射的物理内存大小之外,还可以从一个 64 位虚拟内存地址中获取其在对应页目录中的偏移。
pgd_t *pgd; pmd_t *u_pmds[MAX_PREALLOCATED_USER_PMDS]; pmd_t *pmds[MAX_PREALLOCATED_PMDS]; //PGD 分配: pgd = _pgd_alloc;//调用 _pgd_alloc 函数分配一个新的 PGD。如果分配失败,跳转到 out 标签. if (pgd == NULL) goto out; ...
顶级页表示页全局目录(PGD),它包含一个pgd_t类型数组,多数体系结构中pgd_t类型等同于无符号长整型。PGD中的表项指向二级页目录中的表项:PMD 二级页表是中间页目录(PMD),它是个pmd_t类型数据,其中的表项指向PTE中的表项。 最后一级的页表简称页表,其中包含了pte_t类型的页表项,该页表项指向物理页面。多数体系...
顶级页表是页全局目录(PGD),它包含了一个pgd_t类型数组,多数体系结构中pgd_t类型等同于无符号长整形类型。PGD中的表项指向二级页目录中的表项:PMD。 二级页表是中间页目录(PMD),它是个pmd_t类型数组,其中表项指向PTE中的表项。 最后一级的页表简称页表,其中包含了pte_t类型页表项,该页表项指向物理页面。