⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 page.h.txt

📁 linux内核学习笔记 希望想看的人可以很快下载到
💻 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 + -