【问题标题】:Best practice, where to put request_mem_region最佳实践,将 request_mem_region 放在哪里
【发布时间】:2015-01-14 03:54:11
【问题描述】:

我有两个驱动代码,前一个函数request_mem_region在设备probe期间被调用,后者在设备open期间被调用,当然你必须调用release_mem_regione函数考虑到请求功能的位置,但我想知道这两种选择之间的优缺点。有什么建议吗?

【问题讨论】:

  • 驱动程序在何处/何时执行ioremap()iounmap()

标签: linux-kernel linux-device-driver kernel-module


【解决方案1】:

这取决于区域的使用方式。如果仅在设备打开时才需要它,那么将其打开是有意义的。如果设备一直在后台工作,即使没有打开,也需要在probe中进行映射。基本上,为您的设备所需的最小范围请求它。

将其放入探针中,即使仅在它打开时才需要,也不会总是导致问题,但这确实意味着您正在消耗不必要的内存/地址空间。 (编辑:我忘了,这不执行映射只是保留它,所以这不是一个真正的问题。)

将其打开可能会导致更复杂的情况 - 例如,您需要确保它只被映射一次,即使设备可以同时被两个不同的进程打开。这不是一个很难解决的问题,但在学习编写模块和使用示例代码工作时可能会被忽略。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-03
    • 2011-02-22
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    相关资源
    最近更新 更多