メモリを使用する場合は、メモリが4KBのページサイズが想定されます。PAGE_SIZEバイトページは4キロバイトではありません覚えておくと、この値はハードコードされた逆に、PCのプログラマよくある間違いで、サポートされるプラットフォームは、へ4キロバイトからページサイズを表示します64キロバイト、同じプラットフォーム上で、時にはそれらの異なる実装が異なる。マクロはPAGE_SIZEとPAGE_SHITに関連付けられている。そのページ番号をシフトアドレスを取得するためのビット数を含む。4キロバイト以上ため現在のページ番号は、12個の以上のマクロが<ASM / page.h>で定義されている。彼らは、この情報が必要な場合、ユーザーは、スペースはgetpagesizeライブラリ関数を使用することができます。
ドライバーが一時的にデータを格納するための16キロバイトを必要とする場合、それは指定しないでください、非正常な状況を見てみましょう
あなたは、このような解決策へのポータブルソリューションを必要とするget_free_pagesへのインデックス2は、幸いにも、カーネル開発者によって書かれ、get_order呼ばれてきました..:
書式#include <ASM / page.h>
INT順序= get_order(×1024 16)。
BUF = get_free_pages(GFP_KERNEL、オーダー);
get_orderパラメータは2の累乗でなければならない、覚えておいてください。