get_free_page()
模組如果需要比較大的記憶體,通常最好使用頁本位(page-oriented)技術。 配置記憶頁,你有下列函式可選擇:
get_zeroed_page(unsigned int flags);
回傳一指向新記憶頁的指標,記憶頁全部都填0。
__get_free_page(unsigned int flags);
不清除原有內容。
__get_free_page(unsigned int flags,int order);
配置一個跨頁的連續記憶區,並傳回一個指向記憶區第一個位元組的指標。記憶區的內容不會被清除。
這裡的flags
與kmalloc()所用的相同,order
是你要配置的頁數的2的對數(logN),若想配置一頁記憶體order等於0,若要配置8頁,order等於3。為了幫助計算階數,可以使用get_order()函式。
當程式不再需要記憶頁,就應該以下列函式之一將其釋放:
void free_page(unsigned long addr);
void free_page(unsigned long addr,unsigned order);