arch/x86/mm/pageattr.c
来源:互联网 发布:云计算的运用 编辑:程序博客网 时间:2024/06/03 13:09
arch/x86/include/asm/pgtable_types.h
This header defines page attributes such as
#define _PAGE_PRESENT (_AT(pteval_t, 1) << _PAGE_BIT_PRESENT)#define _PAGE_RW (_AT(pteval_t, 1) << _PAGE_BIT_RW)#define _PAGE_USER (_AT(pteval_t, 1) << _PAGE_BIT_USER)#define _PAGE_PWT (_AT(pteval_t, 1) << _PAGE_BIT_PWT)#define _PAGE_PCD (_AT(pteval_t, 1) << _PAGE_BIT_PCD)#define _PAGE_ACCESSED (_AT(pteval_t, 1) << _PAGE_BIT_ACCESSED)#define _PAGE_DIRTY (_AT(pteval_t, 1) << _PAGE_BIT_DIRTY)#define _PAGE_PSE (_AT(pteval_t, 1) << _PAGE_BIT_PSE)#define _PAGE_GLOBAL (_AT(pteval_t, 1) << _PAGE_BIT_GLOBAL)#define _PAGE_SOFTW1 (_AT(pteval_t, 1) << _PAGE_BIT_SOFTW1)#define _PAGE_SOFTW2 (_AT(pteval_t, 1) << _PAGE_BIT_SOFTW2)#define _PAGE_PAT (_AT(pteval_t, 1) << _PAGE_BIT_PAT)#define _PAGE_PAT_LARGE (_AT(pteval_t, 1) << _PAGE_BIT_PAT_LARGE)#define _PAGE_SPECIAL (_AT(pteval_t, 1) << _PAGE_BIT_SPECIAL)#define _PAGE_CPA_TEST (_AT(pteval_t, 1) << _PAGE_BIT_CPA_TEST)*/#define pgprot_val(x) ((x).pgprot)#define __pgprot(x) ((pgprot_t) { (x) } )
__change_page_attr(struct cpa_data *cpa, int primary)
struct cpa_data { unsigned long *vaddr; pgd_t *pgd; pgprot_t mask_set; pgprot_t mask_clr; unsigned long numpages; int flags; unsigned long pfn; unsigned force_split : 1; int curpage; struct page **pages;};
- Use cpa for information passing
- Use address to find out corresponding PTE, &= mask_clr, |=mask_set, besides pfn should be added back
CPA Bitmap
#define CPA_FLUSHTLB 1
#define CPA_ARRAY 2
#define CPA_PAGES_ARRAY 4
static inline int change_page_attr_set(unsigned long *addr, int numpages, pgprot_t mask, int array){ return change_page_attr_set_clr(addr, numpages, mask, __pgprot(0), 0, (array ? CPA_ARRAY : 0), NULL);}static inline int cpa_set_pages_array(struct page **pages, int numpages, pgprot_t mask){ return change_page_attr_set_clr(NULL, numpages, mask, __pgprot(0), 0, CPA_PAGES_ARRAY, pages);}
阅读全文
0 0
- arch/x86/mm/pageattr.c
- arch/x86/mm/pgtable.c
- arch\arm\mm\mmu.c
- (Linux-3.2.2)arch/x86/boot/printf.c
- x86 arch 指令学习
- arch/x86/boot/header.S
- cpu arch之mips x86
- Linux / Xen 源代码片段解读 (1):函数 adjust_vmx_controls(arch/x86/kvm/vmx.c)
- linux2.6内核移植zc301摄像头时 kernel BUG at arch/arm/mm/dma-mapping.c:409!..的解决方法
- Centos6.5 系统升级内核版本至4.0.5 错误:arch/x86/kvm/mmu.c: In function ?.vm_mmu_pte_write?.
- arch/arm/kernel/armksyms.c
- (Linux-3.2.2)arch/x86/boot/ctype.h
- 转:vxWorks 653的x86 arch 代码移植
- Building goldfish kernel: “goldfish_armv7_defconfig” not found at “arch/x86/configs”
- *** Can't find default configuration "arch/x86/configs/xxx"!
- Android - MPTCP - (kernel/arch/x86/configs/android-x86_64_defconfig)
- System.getProperty("os.arch") 系统是64 获得x86
- /arch
- days6
- Android线程管理(一)——线程通信
- 给结构体里定义的二维数组赋值
- Java集合-ArrayList源码分析
- 设计模式
- arch/x86/mm/pageattr.c
- 嵌入式Linux驱动笔记(八)------依赖Linux kernel驱动的pwm编写
- ssh登陆Linux
- 如何在Spark2.0.2中启动Ipython Notebook
- Hbase 集群维护
- HDU 2049-不容易系列之(4)——考新郎
- TreeSet集合的两种排序
- rbtree原理及应用--使用
- ZooKeeper学习笔记:netcat命令基本用法与客户端连接zookeeper