linux-kernel – ARM Linux页表项格式 – 未使用的位?
发布时间:2020-12-14 01:52:54 所属栏目:Linux 来源:网络整理
导读:我需要使用两个PTE位来存储我的内核模块在拦截页面保护错误时将使用的自定义“状态”值. 我正在开发Galaxy Nexus,它有一个ARM Cortex A9(我相信ARM v7). Linux内核版本3.0.31. Linux PTE定义如下(来自arch / arm / include / asm / pgtable.h: /* * "Linux"
我需要使用两个PTE位来存储我的内核模块在拦截页面保护错误时将使用的自定义“状态”值.
我正在开发Galaxy Nexus,它有一个ARM Cortex A9(我相信ARM v7). Linux内核版本3.0.31. Linux PTE定义如下(来自arch / arm / include / asm / pgtable.h: /* * "Linux" PTE definitions. * * We keep two sets of PTEs - the hardware and the linux version. * This allows greater flexibility in the way we map the Linux bits * onto the hardware tables,and allows us to have YOUNG and DIRTY * bits. * * The PTE table pointer refers to the hardware entries; the "Linux" * entries are stored 1024 bytes below. */ #define L_PTE_PRESENT (_AT(pteval_t,1) << 0) #define L_PTE_YOUNG (_AT(pteval_t,1) << 1) #define L_PTE_FILE (_AT(pteval_t,1) << 2) /* only when !PRESENT */ #define L_PTE_DIRTY (_AT(pteval_t,1) << 6) #define L_PTE_RDONLY (_AT(pteval_t,1) << 7) #define L_PTE_USER (_AT(pteval_t,1) << 8) #define L_PTE_XN (_AT(pteval_t,1) << 9) #define L_PTE_SHARED (_AT(pteval_t,1) << 10) /* shared(v6),coherent(xsc3) */ 只需查看这个定义列表,就会看到3,4,5位可用,以及11位和更高位.但是,我知道20个最重要的位[31:12]用于页码(PFN,我相信),所以我不能使用其中任何一个. 我可以自由地使用位[5:3]还是会产生问题?我花了几个小时寻找答案,但我只能找到有关Linux如何使用PTE位进行x86架构的文档. 更新: 我已经编制了一个我相信每个PTE位的列表. bit 0 PRESENT bit 1 YOUNG bit 2 MEMORY TYPES 0 B FILE (only when not PRESENT) bit 3 MEMORY TYPES 1 C bit 4 AP0 bit 5 AP1 bit 6 DIRTY bit 7 RD_ONLY bit 8 USER bit 9 XN bit 10 SHARED bit 11 EXT_NG (no idea what this is) bit 12 |---| ... |PFN| bit 31 |---| 不幸的是我没有看到指定没有读取或写入权限的方法,但不知何故,带有PROT_NONE的mmap似乎仍然有效.我知道如何指定读取或R / W权限,但我仍然需要知道如何设置页面没有权限. 解决方法
您可以尝试清除pte中的当前位,是否会强制页面错误?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – 服务器上的TCP监控:比较netstat和lsof?
- LINUX入门:如何用 bash-support 插件将 Vim 编辑器打造成编
- linux – Fish Shell:如何自定义自动完成功能的颜色?
- Linux常用的命令(3)
- 如何在Linux,Mac和Windows上从Java启动.NET应用程序?
- 选择并接受Linux中的延迟
- linux – 为什么apt-get update告诉我运行apt-get update?
- libvirt报错总结
- [RedHat]“is not in the sudoers file”解决方法
- linux – Shell Scripting:在shebang中使用grep和tr
推荐文章
站长推荐
热点阅读