私のドライバーでは、返されたアドレスioremap
をユーザー空間アドレスにマップしようとしています。
- からどのようなアドレスが返され
ioremap
ますか? kmalloc
住所とどう違うの?- から返されたアドレスをマップするにはどうすればよい
ioremap
ですか? - どのアドレスを に挿入する必要があります
remap_pfn_range
か?
私のドライバーでは、返されたアドレスioremap
をユーザー空間アドレスにマップしようとしています。
ioremap
ますか?kmalloc
住所とどう違うの?ioremap
ですか?remap_pfn_range
か?ioremap()
を使用している場合は必要ありませんremap_pfn_range()
。 ioremap()
物理アドレスをカーネル仮想アドレスにマップします。 remap_pfn_range()
物理アドレスをユーザー空間に直接マップします。物理アドレス (pfn を生成するために PAGE_SHIFT でシフトダウン) を に直接渡すだけremap_pfn_range()
です。質問順:
virt_to_phys()
最初に呼び出して、カーネルの仮想アドレスを物理アドレスに変換すると、これを行うことができます。ただし、このメモリ範囲へのカーネル アクセスが実際に必要ない場合は、手順をスキップしてください。