亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3174 | 回復(fù): 2
打印 上一主題 下一主題

請(qǐng)教arm中pmd_page_vaddr函數(shù) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-09-27 15:21 |只看該作者 |倒序?yàn)g覽
這個(gè)函數(shù)定義在arch\arm\include\asm\pgtable.h
通常在pte_offset_map中被調(diào)用:

  1. #define pte_offset_map(dir,addr)        (pmd_page_vaddr(*(dir)) + __pte_index(addr))
復(fù)制代碼

pmd_page_vaddr()本身很小,貼在這里了:

  1. static inline pte_t *pmd_page_vaddr(pmd_t pmd)
  2. {
  3.         unsigned long ptr;

  4.         ptr = pmd_val(pmd) & ~(PTRS_PER_PTE * sizeof(void *) - 1);
  5.         ptr += PTRS_PER_PTE * sizeof(void *);

  6.         return __va(ptr);
  7. }
復(fù)制代碼

我看了下,內(nèi)核中如果需要得到最后一級(jí)頁表項(xiàng)pte時(shí)需要會(huì)最終調(diào)用到pte_offset_map(),我的理解,在arm中硬件上只用到了一級(jí)頁表,內(nèi)核再次基礎(chǔ)上又加了一級(jí)二級(jí)頁表。
pmd_page_vaddr()函數(shù)似乎就是返回二級(jí)頁表的地址,但這個(gè)頁表的位置似乎很奇怪,pmd_val(pmd)得到的是真正的物理地址,按照代碼,二級(jí)頁表放在了這個(gè)物理地址后2k(512*4 byte)的地方。
我的理解不一定正確,大家看看這樣理解正確不?

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2009-09-28 10:29 |只看該作者
LZ比我早5天.
不知道LZ是哪個(gè)版本,我在2.6.13.2中沒找到那個(gè)文件...
pmd_val(pmd)得到的是真正的物理地址,,,這句話我還真不信...

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-09-28 11:33 |只看該作者

回復(fù) #2 epegasus 的帖子

我的版本比較新,2.6.29的。關(guān)于“pmd_val(pmd)得到的是真正的物理地址”,我的理解也不一定正確。
我的理解是, 在arm中一般情況下硬件只用了一級(jí)頁表,因?yàn)樵趐aging_init()中對(duì)大部分內(nèi)存只初始化了一級(jí)頁表,具體過程在create_mapping()中。
如果只用了一級(jí)頁表,那么pmd就是一個(gè)段描述符,高位表示了段基地址,也就是真正的物理地址。
我一直很奇怪的是,似乎Linux還為arm建立了二級(jí)頁表,以兼容x86等平臺(tái),但我一直找不到這部分的代碼。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP