内核中的映射地址 [英] Ioremapped address in kernel

查看:31
本文介绍了内核中的映射地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有关于 ioremap 的基本查询,用于将寻址到内核虚拟内存的设备 IO 映射.

I have basic query about ioremap used to map device IO addressed into kernel's virtual memory.

我想知道如果从 ioremap 返回的地址传递给像 virt_to_phys() 这样的例程,它会返回设备 IO 地址吗?

I would like to know if returned address from ioremap is passed to routines like virt_to_phys(), would it return back Device IO address ?

谢谢

推荐答案

virt_to_phys() 仅对内核线性映射中的虚拟地址有效,因为它只是一些快速地址算法,而不是完整的软件表走.线性映射通常只覆盖 RAM.但是,ioremap() 返回的虚拟地址通常(可能总是,但我没有耐心检查每个实现)是 vmalloc 地址,因此如果您将其传递给 virt_to_phys() 你会得到废话.

virt_to_phys() is only valid for virtual addresses within the kernel linear map, since it's just some fast address arithmetic, not a full software table walk. The linear map normally only covers RAM. The virtual address returned by ioremap(), however, will usually (probably always, but I don't have the patience to check every implementation) be a vmalloc address, so if you pass that to virt_to_phys() you'll get nonsense back.

这篇关于内核中的映射地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆