當使用內存時, 記住一個內存頁是 PAGE_SIZE 字節, 不是 4KB. 假定頁大小是 4KB 並且 硬編碼這個值是一個 PC 程序員常見的錯誤, 相反, 被支持的平台顯示頁大小從 4 KB 到 64 KB, 並且有時它們在相同平台上的不同的實現上不同. 相關的宏定義是 PAGE_SIZE 和 PAGE_SHIT. 后者包含將一個地址移位來獲得它的頁號的位數. 對於 4KB 或者更大的頁這 個數當前是 12 或者更大. 宏在 <asm/page.h> 中定義; 用戶空間程序可以使用 getpagesize 庫函數, 如果它們需要這個信息.
讓我們看一下非一般的情況. 如果一個驅動需要 16 KB 來暫存數據, 它不應當指定一個
2 的指數 給 get_free_pages. 你需要一個可移植解決方法. 這樣的解決方法, 幸運的是, 已經由內核開發者寫好並且稱為 get_order:
#include <asm/page.h>
int order = get_order(16*1024);
buf = get_free_pages(GFP_KERNEL, order);
記住, get_order 的參數必須是 2 的冪.