linux 内核参数 pte,linux内核中的PTE结构

我一直试图在linux源代码中查看一个结构/联合,它与禁用PAE的x86系统上的PTE相对应.到目前为止,我在arch / x86 / include / asm / page_32.h中只找到了以下内容

typedef union {

pteval_t pte;

pteval_t pte_low;

} pte_t;

我现在有点困惑,因为我在我面前打开了英特尔参考手册第3A卷,并且该联合中的任何内容都与手册中解释的PTE中存在的十几个奇数字段相对应.

这可能是一个微不足道的问题,但对我而言,它更像是了解Linux内核中内存管理过程中的绊脚石.

编辑:我有2.6.29源代码

解决方法:

pteval_t只是将页表条目视为不透明的blob – 在您正在查看的体系结构上,它只是一个32位无符号值.

使用按位运算符和掩码访问PTE中的字段 – 在源代码中我很方便(Linux 2.6.24),这些字段在include / asm-x86 / pgtable_32.h中定义.您在“英特尔参考手册”中看到的字段(大多数是单位标志)在此处定义 – 例如:

#define _PAGE_PRESENT 0x001

#define _PAGE_RW 0x002

#define _PAGE_USER 0x004

#define _PAGE_PWT 0x008

#define _PAGE_PCD 0x010

#define _PAGE_ACCESSED 0x020

#define _PAGE_DIRTY 0x040

#define _PAGE_PSE 0x080 /* 4 MB (or 2MB) page, Pentium+, if present.. */

#define _PAGE_GLOBAL 0x100 /* Global TLB entry PPro+ */

#define _PAGE_UNUSED1 0x200 /* available for programmer */

#define _PAGE_UNUSED2 0x400

#define _PAGE_UNUSED3 0x800

标签:linux,paging,linux-kernel

来源: https://codeday.me/bug/20190724/1519714.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值