社区
Linux/Unix社区
帖子详情
在2.4.20-8中找不到pte_offset()
lysliberty
2003-10-16 10:47:43
在2.4.20-8pgtable中找不到pte_offset(dir,addr)这个函数,但是有许多pte_offset_xxxx()之类的函数,xxxx是指kernel map 等等, 但是不知道那个函数可以用来代替pte_offset?多谢了!
...全文
116
14
打赏
收藏
在2.4.20-8中找不到pte_offset()
在2.4.20-8pgtable中找不到pte_offset(dir,addr)这个函数,但是有许多pte_offset_xxxx()之类的函数,xxxx是指kernel map 等等, 但是不知道那个函数可以用来代替pte_offset?多谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lysliberty
2003-10-21
打赏
举报
回复
上面的那个问题搞定了,是page_address的问题。
在2.4.20中,page_address是这样定义的,看不懂,尤其是page的virtual项,老大能够解释一下,多谢!
#if defined(CONFIG_HIGHMEM) || defined(WANT_PAGE_VIRTUAL)
#define page_address(page) ((page)->virtual)
#else /* CONFIG_HIGHMEM || WANT_PAGE_VIRTUAL */
#define page_address(page) \
__va( (((page) - page_zone(page)->zone_mem_map) << PAGE_SHIFT) \
+ page_zone(page)->zone_start_paddr)
CoolQ
2003-10-21
打赏
举报
回复
你在一个帖子里一下子问这么多问题?真是服了U
上边不是写得很清楚么?
#if defined(CONFIG_HIGHMEM) || defined(WANT_PAGE_VIRTUAL)
//如果定义了CONFIG_HIGHMEM或者WANT_PAGE_VIRTUAL宏
#define page_address(page) ((page)->virtual)
//page_address就是page->virtual,因为这个时候page结构里就有地址的信息,也就是virtual
#else /* CONFIG_HIGHMEM || WANT_PAGE_VIRTUAL */
//如果没有定义上边的两个宏
#define page_address(page) \
__va( (((page) - page_zone(page)->zone_mem_map) << PAGE_SHIFT) \
+ page_zone(page)->zone_start_paddr)
//__va是一个宏,作用就是将物理地址转换成虚拟地址,具体的定义自己GREP一下
//page本身就是一个zone_mem_map数组的一个元素,(page) - page_zone(page)->zone_mem_map就是page在整个数组中的偏移量,也就是数组的下标,然后左移以后就是页面的长度,再加上本身这个页面所在区的起始地址,就是page的物理地址了,然后用__va转换一下就完事了
CoolQ
2003-10-20
打赏
举报
回复
报什么错?
lysliberty
2003-10-20
打赏
举报
回复
上面的那个问题解决了。我换成pte_offset_kernel(dir, address)就ok了。
我的内存应该是非PAE的。
还有一个问题,请大侠指点一二:
就是我通过上面的
pte=pte_offset_kernel(pmd, address),
我想利用获得的pte得到对应的物理地址,我是用下面这条语句实现的:
(char *) page_address(pte_page(*pte)) + (addr & ~PAGE_MASK);
但是系统老报错,不知道是为什么?
lysliberty
2003-10-20
打赏
举报
回复
忘了说了,我的机器是P4的。
CoolQ
2003-10-20
打赏
举报
回复
也就是说,如果你选的是4G的支持,就是二级页表
如果是64G的支持,就是三级页表
CoolQ
2003-10-20
打赏
举报
回复
一般默认的内核都是非PAE的,如果你内核时的选项是64G,那么就是PAE模式的
lysliberty
2003-10-18
打赏
举报
回复
这个我有所了解,就是说pentium Pro以上的可以支持三级页表,你说得PAE模式,是指的一种编译选项吧?那我如何判断我的系统用的两级页表还是三级页表?多谢!
CoolQ
2003-10-17
打赏
举报
回复
i386同时支持二级页表,PentiumPro也支持三级页表
所以有两个文件pgtable-2level.h和pgtable-3level.h
当处于PAE模式下,就include <pgtable-3level.h>
否则,就include <pgtable-2level.h>
二级页表时pmd和pgd是一个东西
CoolQ
2003-10-17
打赏
举报
回复
不好意思没有看清楚
2.4.18下
#define __pte_offset(address) \
((address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
#define pte_offset(dir, address) ((pte_t *) pmd_page(*(dir)) + \
__pte_offset(address))
2.4.20下
#define __pte_offset(address) \
((address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
具体在2.4.20下pte_offset对应什么,我也不是很清楚
lysliberty
2003-10-17
打赏
举报
回复
还有,有那位大侠知道在2.4.20中采用的两级页目录还是三级页目录?
CoolQ
2003-10-16
打赏
举报
回复
直接用__pte_offset就行了。
CoolQ
2003-10-16
打赏
举报
回复
在2.4.20-8中有pte_offset(dir,add)阿,不过不是函数,是一个宏而已,具体的定义是:
#define __pte_offset(address) \
((address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
跟以前各版本的定义是一样的
lysliberty
2003-10-16
打赏
举报
回复
我的函数有两个输入参数,而__pte_offset()只有一个输入参数,好像这样不行。
percona-xtrabackup-24-
2.4
.
20
-1.el7.x86_64.rpm
一、Xtrabackup是什么? 官方文档:https://www.percona.com/doc/percona-xtrabackup/
2.4
/intro.html Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。 Xtrabackup有两个主要的工具:xtrabackup、innobackupex 1、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。 ———————————————— 版权声明:本文为CSDN博主「天才小楼楼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/sinat_29214327/article/details/81517233
kernel-
2.4
.
20
-8.src.rpm
kernel-
2.4
.
20
-8.src.rpm
akka-slf4j_2.11-
2.4
.
20
-API文档-
中
文版.zip
赠送jar包:akka-slf4j_2.11-
2.4
.
20
.jar; 赠送原API文档:akka-slf4j_2.11-
2.4
.
20
-javadoc.jar; 赠送源代码:akka-slf4j_2.11-
2.4
.
20
-sources.jar; 赠送Maven依赖信息文件:akka-slf4j_2.11-
2.4
.
20
.pom; 包含翻译后的API文档:akka-slf4j_2.11-
2.4
.
20
-javadoc-API文档-
中
文(简体)版.zip; Maven坐标:com.typesafe.akka:akka-slf4j_2.11:
2.4
.
20
; 标签:typesafe、akka、slf4j、
中
文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档
中
的代码和结构保持不变,注释和说明精准翻译,请放心使用。
akka-actor_2.11-
2.4
.
20
-API文档-
中
文版.zip
赠送jar包:akka-actor_2.11-
2.4
.
20
.jar; 赠送原API文档:akka-actor_2.11-
2.4
.
20
-javadoc.jar; 赠送源代码:akka-actor_2.11-
2.4
.
20
-sources.jar; 赠送Maven依赖信息文件:akka-actor_2.11-
2.4
.
20
.pom; 包含翻译后的API文档:akka-actor_2.11-
2.4
.
20
-javadoc-API文档-
中
文(简体)版.zip; Maven坐标:com.typesafe.akka:akka-actor_2.11:
2.4
.
20
; 标签:typesafe、akka、actor、
中
文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档
中
的代码和结构保持不变,注释和说明精准翻译,请放心使用。
akka-protobuf_2.11-
2.4
.
20
-API文档-
中
文版.zip
赠送jar包:akka-protobuf_2.11-
2.4
.
20
.jar; 赠送原API文档:akka-protobuf_2.11-
2.4
.
20
-javadoc.jar; 赠送源代码:akka-protobuf_2.11-
2.4
.
20
-sources.jar; 赠送Maven依赖信息文件:akka-protobuf_2.11-
2.4
.
20
.pom; 包含翻译后的API文档:akka-protobuf_2.11-
2.4
.
20
-javadoc-API文档-
中
文(简体)版.zip; Maven坐标:com.typesafe.akka:akka-protobuf_2.11:
2.4
.
20
; 标签:typesafe、akka、protobuf、
中
文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档
中
的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Linux/Unix社区
23,124
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章