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_HIGHMEMPAGE_OFFSET
それで
- マットの答えはのページに適していると思います
ZONE_NORMAL kmap()構造体ページに関連付けられた4KBデータの開始物理アドレスを見つけるために使用する(unsigned long)(&page)-PAGE_OFFSETとしますが、構造自体を格納する物理アドレスを見つけるために使用する必要があるのは正しいですか?
正してください。