ユーザー空間からの仮想アドレスを知っているので、その空間をアンキャッシュしたい。カーネル モジュールで API set_memory_uc を使用しようとしています。
カーネル コードを調べたところ、この API は最初の引数として仮想アドレスを受け入れていることがわかりましたが、この API では __pa() を使用してそれを PA に変換しています。ただし、__pa() はカーネル空間の仮想アドレスに対してのみ有効ですよね? そこで、ユーザー空間の仮想アドレスを引数として set_memory_uc を使用できるかどうか疑問に思います。
私が期待するのは次のような関数です:
uncache(VA) VA はユーザー空間の仮想アドレスです。この関数は、仮想アドレスに従って 1 ページのキャッシュを解除します (最初にページを mlock します)。
ありがとうございました!