struct page
ページにキャッシュされたファイルのアドレス空間からを取得したとしましょう。
これから4KBデータの開始物理アドレスを取得するにはどうすればよいstruct page
ですか?
data
中にポインタのようなものがあるはずなstruct sk_buff
のに、見つかりませんでした。
編集
答えてくれたMatとllyaに感謝します。
答えを見た後、最初の問題は、がにあるか、struct page
にあるZONE_NORMAL
かを識別することだと思いますZONE_HIGHMEM
。
ファイルI/O中に、キャッシュされたページが見つからない場合は、最初にを使用して新しいページを割り当てますpage_cache_alloc_cold()
。page_cache_alloc_cold()
最後に、ジョブに(x86では+ 896Mから始まるカーネルメモリ領域)alloc_pages()
を使用するように見える呼び出しを行います。ZONE_HIGHMEM
PAGE_OFFSET
それで
- マットの答えはのページに適していると思います
ZONE_NORMAL
kmap()
構造体ページに関連付けられた4KBデータの開始物理アドレスを見つけるために使用する(unsigned long)(&page)-PAGE_OFFSET
としますが、構造自体を格納する物理アドレスを見つけるために使用する必要があるのは正しいですか?
正してください。