如何使用System Call 讀取page table 參數

這個版面主要討論 debian 在 server 端的應用問題, server 種類繁多..舉凡 Web Server 、 File Server、 DHCP Server..等等。

版主: 阿信

如何使用System Call 讀取page table 參數

文章yogihuang » 週五 5月 20, 2011 12:15 pm

Hi all,

我想在linux版本 2.6.26-2-xen-686 使用syscalls 讀取page table 中的"Dirty page" 參數,

已事先另外下載 linux-headers-2.6.26-2-xen-686 (2.6.26-26lenny2) 套件,

套件執行後產生新的路徑: /usr/src/linux-headers-2.6.26-2-xen-686/include/linux/page-flags.h

但 #include <page-flags.h> 以及 fd= open ("/usr/src/linux-headers-2.6.26-2-xen-686/include/linux/page-flags.h", O_RDONLY);

執行 gcc compiler 顯示 syscallopen.c:7:24: error: page-flags.h: 沒有此一檔案或目錄

請問各位, 無法執行是因為header的路徑擺放位置不正確, 還是system call 的寫法錯誤呢?
yogihuang
可愛的小學生
可愛的小學生
 
文章: 2
註冊時間: 週五 5月 20, 2011 11:40 am

Re: 如何使用System Call 讀取page table 參數

文章j1989_41 » 週五 5月 20, 2011 12:50 pm

yogihuang 寫:Hi all,

我想在linux版本 2.6.26-2-xen-686 使用syscalls 讀取page table 中的"Dirty page" 參數,

已事先另外下載 linux-headers-2.6.26-2-xen-686 (2.6.26-26lenny2) 套件,

套件執行後產生新的路徑: /usr/src/linux-headers-2.6.26-2-xen-686/include/linux/page-flags.h

但 #include <page-flags.h> 以及 fd= open ("/usr/src/linux-headers-2.6.26-2-xen-686/include/linux/page-flags.h", O_RDONLY);

執行 gcc compiler 顯示 syscallopen.c:7:24: error: page-flags.h: 沒有此一檔案或目錄

請問各位, 無法執行是因為header的路徑擺放位置不正確, 還是system call 的寫法錯誤呢?


page-flags.h 並不在預設的 header 搜尋路徑裡
所以 gcc 會跟你抱怨說找不到

多加一個 gcc 參數 -I/usr/src/linux-headers-2.6.26-2-xen-686/include/linux/ 試試看
("-I" 與 "/usr/src/linux-headers-2.6.26-2-xen-686/include/linux/" 之間沒有空格)
-I 這個參數可以指定 header files 的搜尋路徑
更詳細的說明可以參考 鳥哥的 Linux 私房菜 裡的 第二十二章、軟體安裝:原始碼與 Tarball ;-)
j1989_41
可愛的小學生
可愛的小學生
 
文章: 52
註冊時間: 週四 11月 12, 2009 11:54 am

Re: 如何使用System Call 讀取page table 參數

文章yogihuang » 週三 6月 15, 2011 4:23 pm

這樣似乎無法解決問題,
因為 /usr/src/linux-headers-2.6.26-2-xen-686 中的文件又連結到 /usr/src/linux-headers-2.6.26-2-common-xen/內的文件,
而我嘗試過用symbolic link的方式將需要include的檔案逐一建立"軟連結"(i.e. ln -s ), 但compile還是會有問題,
顯示錯誤, 例如:
In file included from /usr/include/linux/slab.h:12:0,
from /usr/include/linux/percpu.h:5,
from /usr/include/asm/local.h:4,
from /usr/include/linux/module.h:19,
from 0615_test.c:1:
/usr/include/linux/gfp.h:108:45: error: unknown type name ‘gfp_t’
/usr/include/linux/gfp.h:120:39: error: unknown type name ‘gfp_t’
/usr/include/linux/gfp.h:147:32: error: unknown type name ‘gfp_t’
/usr/include/linux/gfp.h:164:55: error: unknown type name ‘gfp_t’
/usr/include/linux/gfp.h:176:42: error: expected ‘)’ before ‘unsigned’
/usr/include/linux/gfp.h:179:31: error: expected ‘)’ before ‘unsigned’
/usr/include/linux/gfp.h:182:54: error: unknown type name ‘gfp_t’
/usr/include/linux/gfp.h:215:39: error: unknown type name ‘gfp_t’
/usr/include/linux/gfp.h:216:38: error: unknown type name ‘gfp_t’

透過 套件安裝方式下載 linux-headers-2.6.26-2-xen-686 (2.6.26-26lenny2) 套件, 是否還需要再重新編譯呢?
yogihuang
可愛的小學生
可愛的小學生
 
文章: 2
註冊時間: 週五 5月 20, 2011 11:40 am


回到 debian server

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客