我对用于将寻址的设备 IO 映射到内核的虚拟内存中的 ioremap 有基本的疑问。
我想知道如果从 ioremap 返回的地址被传递给像 virt_to_phys() 这样的例程,它会返回设备 IO 地址吗?
谢谢
最佳答案
virt_to_phys()
仅对内核线性映射中的虚拟地址有效,因为它只是一些快速地址算法,而不是完整的软件表遍历。线性映射通常只覆盖 RAM。然而,ioremap()
返回的虚拟地址通常(可能总是,但我没有耐心检查每个实现)是一个 vmalloc 地址,所以如果你将它传递给 virt_to_phys()
你会得到废话。
关于c - 内核中的映射地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38760947/