在两个Linux设备驱动程序中分割映射调用

时间:2017-09-06 13:06:57

标签: linux linux-device-driver

我正在编写一个驱动程序d1,它将调用 request_mem_region()和ioremap(),以及一个驱动程序d2,它将使用相同的地址调用 ioremap()。<登记/> 在这种情况下会发生什么?

1 个答案:

答案 0 :(得分:0)

两个驱动程序都会按预期工作,但建议在ioremap()之前使用request_mem_region(),以避免其他驱动程序写入该物理内存区域。

request_mem_region 告诉内核您的驱动程序将使用此范围的I / O地址,这将阻止其他驱动程序通过request_mem_region对同一区域进行任何重叠调用。

这种机制不进行任何类型的映射,它是一种纯粹的预留机制,它依赖于所有内核设备驱动程序必须很好的事实,并且它们必须调用request_mem_region,检查返回值,并且行为正常如果有错误。

因此,没有request_mem_region(),您的代码就可以完全合乎逻辑。