虛擬區域的頁面

 

  English Language Content




虛擬區域的頁面

在Linux內核,由於task_structmm我可以訪問進程的列表vm_area_struct號 鑑於這些vm_area_struct秒,我如何獲得struct page s的帶寬,其實這VMA的對應?

我試圖尋找職能毫米/ memory.c等,但我無所適從。

編輯:計劃的目的是找出哪些網頁,在目前的VMA在內存中,哪些不是。 但我希望有人告訴我如何做到這一點位,這是一小部分家庭作業,我需要找出我自己。 但我似乎無法弄清楚如何找到對應的網頁本VMA的。 如果我能找到的網頁,我的數字我可以檢查他們是否有一個有效的酸鉛與否。

#: 299719     kernel    c    linux    memory-management    linux-kernel     User: FreeMemory

Answer: 884968

我沒有直接回答,手,但它不會帶你長時間使用導航結構 lxr.linux.no

既然你已經有了你的結構要開始,看一看從http://lxr.linux.no/linux+v2.6.29/+code=vm_area_struct 。 你可以尋找定義,看到一個單一的結構是用來等.. 如果你已經知道最後的結構正在尋找你的名字,你可以在扭轉和導航,直到你達到毫米。

請注意,如果您的網絡連接是不那麼好,你可能需要安裝一個本地副本的索引源通過獲取你的發行版的lxr軟件包並生成指數在本地。 它用於需要2小時 1 400MHz的/ 128MB的機器,現在它應該做得更快得多。

#: 884968     kernel    c    linux    memory-management    linux-kernel     User: winden

Answer: 299875

您的評論,從另一個答案(編輯:其他答案似乎已經被刪除),看來你想讀取用戶空間。 函數來獲取用戶空間的頁面將是get_user_pages()但最可能不是你想要的,你可能需要copy_from_user / copy_to_user

#: 299875     kernel    c    linux    memory-management    linux-kernel     User: CesarB

Comments for #: 299875

我相信get_user_pages()生成頁面錯誤時,它發現網頁不存在的物理內存。 但我認為follow_page()可能獲得成功。 讓我檢查。   #:145687  FreeMemory
它應該,畢竟你不應該擔心頁面是否存在或沒有。 你究竟想幹什麼?   #:145691  CesarB
是啊,這就是我以前也錯了。 在VM地區已經存在,但頁面不存在總是:)   #:145696  Johannes Schaub - litb
我只是想知道哪些網頁在VMA的存在,哪些不是。 在這種情況下,我能循環的vm_end從vm_start在VMA的,遞增的PAGE_SIZE,做follow_page每個地址? 如果follow_page為NULL,則頁面不存在,否則它是什麼?   #:145698  FreeMemory

Search

Automagic Translation

Sharing

Share/Bookmark
0.4676.0.05
Dump from StackOverflow