日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

arm linux 进程页表,linux-kernel – ARM Linux页表项格式 – 未使用的位?

發布時間:2023/12/15 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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页表项格式 – 未使用的位?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。