在我的驱动程序中,我试图将ioremap
返回的地址映射到用户空间地址。
ioremap
返回什么样的地址? kmalloc
地址有什么不同? ioremap
返回的地址? remap_pfn_range
中插入哪个地址? 最佳答案
如果使用ioremap()
,则不需要remap_pfn_range()
。 ioremap()
将物理地址映射到内核虚拟地址。 remap_pfn_range()
将物理地址直接映射到用户空间。只需将您的物理地址(向下移位PAGE_SHIFT以产生pfn)直接传递给remap_pfn_range()
即可。您的问题顺序如下:
virt_to_phys()
可以将内核虚拟地址转换为物理地址,则可以执行此操作。但是,如果您实际上不需要内核访问此内存范围