copy_to_user
/ copy_from_user
、get_user
/put_user
関数がこの目的のためのものであることは知っています。
私の質問は、ユーザー空間のアドレス/ポインターが与えられた場合、一般に、カーネルからアドレスが指すデータにどのようにアクセスできますか?
最初に、含まれているページが (ディスクではなく) 物理メモリにあることを確認する必要があると想像できます。
次のステップは何ですか?*p
どこかのユーザー空間データを指しているポインターを使用p
して、データを直接参照できますか?
それとも、最初に呼び出しkmap
て、含まれている物理ページ フレームをカーネルの仮想アドレス空間にマップする必要がありますか? なんで?