arm linux 进程页表,linux-kernel – ARM 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权限,但我仍然需要知道如何设置页面没有权限.
arm linux 进程页表,linux-kernel – ARM Linux页表项格式 – 未使用的位?相关推荐
- arm linux 进程页表,arm-linux内存页表创建
linux的内存(正式)页表是在内核代码执行到start_kernel函数后执行paging _init函数建立的,这里要注意一个事情就是说,这里paging_init函数可以正常创建内存页表的条件有 ...
- arm linux 进程页表,linux内存管理(五)arm页表
最近比较忙,好多天没更新了,后面可能还需要20多篇文章才能把整个内存管理讲透. 前面讲述了一个通用的页表机制,以及简单介绍了TLB.今天会介绍arm的页表机制,这里特指32位arm. 目前内核提供了一 ...
- Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)
Linux进程的退出 linux下进程退出的方式 正常退出 从main函数返回return 调用exit 调用_exit 异常退出 调用abort 由信号终止 _exit, exit和_Exit的区别 ...
- linux进程属主6,20150917 Linux进程查看与管理以及作业管理
第一.基础知识 MBR引导--内核--内核程序-->协调其它程序 一般内核运行在硬件之上,各应用也在硬件之前 1)OS的基本功能:文件系统.网络功能.进程管理.内存管理.驱动程序.安全功能 以上 ...
- python做Linux进程运行,Python实现在Linux系统下更改当前进程运行用户
在上一篇文章中,我们讲了如何在linux上用python写一个守护进程.主要原理是利用linux的fork函数来创建一个进程,然后退出父进程运行,生成的子进程就会成为一个守护进程.细心观察的可能会发现 ...
- linux进程看门狗使用方式,Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法...
Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法 [技术领域] [0001] 本发明涉及Linux系统的进程监控技术领域,特别是涉及一种Linux系统中基于看 门狗的精细化进程监控方法及 ...
- linux进程的通信文件映射,Linux进程间通信 -- mmap函数的使用
mmap/munmap函数 函数原型 #include void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t ...
- linux进程异常退出分析,ECS Linux程序异常退出提示“out of memory”的临时解决办法...
ECS Linux上的程序会出现异常退出的情况,退出的原因多数是因为系统内存不足,Linux内存不足通常会触发 Linux 内核里的 Out of Memory (OOM) killer,OOM ki ...
- linux进程间的通信实验,linux实验进程之间的通信.doc
院 系: 计算机学院 实验课程:linux内核设计与实现 实验项目:进程之间的通信 指导老师:冯刚 开课时间: 2010 - 2011 年度第 2 学期 专 业:计算机科学与技术(师范) 班 级:2班 ...
最新文章
- Java源码详解四:String源码分析--openjdk java 11源码
- centos7 安装php nts,centos7安装php7,亲测可行
- HTTP深入浅出 http请求
- [Oracle]理解undo表空间
- Java7里try-with-resources分析--转
- matlab 二维线图绘制函数 plot用法参数
- ranger管mysql_添加Kafka的Ranger访问权限策略
- 整数区间(信息学奥赛一本通-T1324)
- 【Java】四种方法复制视频文件比较
- 大页内存的使用:大页内存分配与释放
- myPRO HMI/SCADA 产品被曝多个严重漏洞
- java 获取本机mac地址并转为字符串
- Appium 控件定位链接整理(appiumdriver)
- UnityShader中插值平滑曲线
- Jenkins 升级到2.42 Junit test report 出现错误的解决
- Tomcat配置优化(一)
- 学写网页 #05# CSS Mastery 笔记 1~3
- spring boot中的banner制作
- 逆波兰式的产生及计算(C++/Java)---编译原理
- el-table纵向和横向都有滚动条的时候,右下角会出现白色方块区域
热门文章
- 类型缩放Google map 地图类型
- 查看ubuntu版本
- VS2010中添加lib库引用
- 判断 小程序_第五届美亚杯赛前必备:从案情资料到小程序解题
- 程序员基本功10栈和队列
- 自旋波matlab计算,[首藏作品](4865)从电子到磁振子,自旋波计算开启新篇章...
- linux中动态链接库用扩展名,Linux操作系统下动态库的生成及链接方法是什么?...
- oracle客户端没有deinstall.bat,Oracle数据库11gR2的卸载 - deinstall
- 详解C++17下的string_view
- Android中保存数据的三种方法