【问题标题】:Does Probe() method in linux need to be re-entrant?linux中的Probe()方法需要重入吗?
【发布时间】:2013-02-23 16:27:34
【问题描述】:

有一个函数将从两个不同的平台驱动程序中调用。我想知道linux的平台驱动核心是否有机会同时调用两个不同设备的probe()?如果是,那么从这两个 probe() 调用的公共函数应该被设计为可重入的。

【问题讨论】:

  • 如果你告诉我们你在说什么probe()函数会更好。 PCIe? USB?有很多。
  • 我提到的 probe() 是用于相机传感器的,它们被注册为平台和 i2c 设备。 @VladLazarenko
  • 我认为如果你的 probe() 函数需要内存,它可以在请求期间进入休眠状态,所以代码确实应该设计成可重入的。

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


【解决方案1】:

正式地,内核的每个函数都必须是可重入的。也许您的功能现在不需要重入,但是,谁知道将来会发生什么?

probe 函数调用,更具体地说,AFAIK,它们在启动时的总线枚举期间被序列化。但是,有些人可能会尝试将它们并行化以加快启动速度。

此外,我们还可以想象两个设备同时插入的情况。总线驱动程序可能会在第一次尚未完成时第二次调用probe 函数。

我的意见是你的探测功能必须是可重入的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 2011-11-26
    相关资源
    最近更新 更多