x64システムでkmapとpage_addressの違いは何ですか?

x64システムでkmapとpage_addressの違いは何ですか?

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

おすすめ記事