最佳实践,在哪里放置request_mem_region

时间:2015-01-10 10:04:43

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

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

1 个答案:

答案 0 :(得分:0)

这取决于该地区的使用方式。如果只在设备打开时才需要它,那么将它打开是有意义的。如果设备在后台持续工作,即使它未打开,也需要在探测中进行映射。基本上,请求它满足您设备需求所需的最小范围。

将它置于探测器中,即使只在打开时需要它也不会总是引起问题,但它确实意味着你正在占用你不需要的内存/地址空间。 (编辑:我忘了,这不执行映射只是保留它,所以这不是一个真正的问题。)

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