kmap()
カーネルまたはモジュールの関数がアクセスできるいくつかのアドレスにページをマップできます。page_address()
ページにアクセスしたアドレスを検索することもできます。
これはkmap()
highmem問題を処理するためのものとなっているが、これ問題が説明され、highmemはx64システムでは問題になりません。
*p
プロセス(ユーザースペースページなど)からページ構造をインポートする場合は、ほぼ同じ操作を使用してkmap(p)
実行してみました。page_address(p)
それらの違いは何ですか?
答え1
x86-64 では highmem ページでない場合、実際の違いはありません。kmap
代表するpage_address
:
if (!PageHighMem(page))
addr = page_address(page);
ただし、これら2つの関数には2つの異なる目的があります。つまり、page_address
ページアドレスを返し、もしあれば;kmap
アドレスを返す前に、ページがマッピングされていることを確認し、呼び出しによってバランスをとる必要がありますkunmap
。