我正在爲IA64開發一個Linux模塊。我目前的問題是驅動程序使用PAGE_SIZE和PAGE_SHIFT宏來進行dma頁面分配。我遇到的問題是編譯驅動程序的機器不是運行驅動程序所需的機器。因此,如果編譯機器上的PAGE_SIZE是2^14K,而目標機器是2^16K,那麼驅動器會失敗。如何以編程方式獲取Linux內核頁面大小
我不想把這個問題變成一個「最佳實踐」問題有關的機器不屬於運行的模塊的那些編譯模塊。我理解這個問題。我發現人們主要使用getpagesize()或sysconf(_SC_PAGE_SIZE)。這兩個選項不在ia64內核頭文件中,所以我不能使用它們。有沒有另一種方法可以獲得運行時PAGE_SIZE?
選項我正在看:
- 讀/ proc中某些文件?
- 系統調用?
- 讓我通過推理(例如ORDER,getpageshift等)計算PAGE_SIZE的其他函數?
- 其他?
你說的`PAGE_SIZE`是可配置的IA64架構,而不是固定的嗎?我認爲`PAGE_SIZE`對於給定的體系結構是固定的(例如對於x86總是`4096`)。 – 2013-04-10 00:54:53
IA64確實支持多種頁面大小:http://www.informit.com/articles/article.aspx?p=29961&seqNum=3 – mdiener 2015-03-24 01:59:48