📄 page.h.txt
字号:
any question,send email to netxiong@263.net
*********************************基本数据结构****************************************
/* PAGE_SHIFT determines the page size */
#define PAGE_SHIFT 12
#define PAGE_SIZE(1UL << PAGE_SHIFT) //一页4k=1000000000000
#define PAGE_MASK(~(PAGE_SIZE-1)) //mask=fffff000注意,PAGE_SIZE-1是fff
#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) //取整,按照后卫对齐
#if CONFIG_X86_PAE //这个宏定义可以使用64位的结构
typedef struct { unsigned long pte_low, pte_high; } pte_t; //64位页表
typedef struct { unsigned long pte_low; } pte_t; //32位也表
typedef struct { unsigned long long pmd; } pmd_t; //中间级页目录
typedef struct { unsigned long long pgd; } pgd_t; //页目录
#define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) //64位
#define pte_val(x) ((x).pte_low) //32位页表的值
#define pmd_val(x) ((x).pmd) //中间级页表的值
#define pgd_val(x) ((x).pgd) //页目录的值
*************************************************************************************
*********************************宏***************************************************
#define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET)
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
#define virt_to_page(kaddr) (mem_map + (__pa(kaddr) >> PAGE_SHIFT))
#define VALID_PAGE(page) ((page - mem_map) < max_mapnr)
/* to align the pointer to the (next) page boundary */
#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) //页边距对齐
**************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -