【问题标题】:How to easily determine if a function could sleep in the Linux Kernel?如何轻松确定函数是否可以在 Linux 内核中休眠?
【发布时间】:2016-07-14 00:13:24
【问题描述】:

据我了解,在中断上下文中,我们不应该调用可以休眠的函数。

那么,是否有文档、约定、线索或任何简单的方法来确定内核中的某些函数是否可以休眠?

【问题讨论】:

    标签: linux linux-kernel


    【解决方案1】:

    一个主要提示是对might_sleep 的调用,大多数核心内核函数调用它作为早期捕获虚假调用者的一种方式。您还可以查找对 schedule 及其变体的调用。

    【讨论】:

    • 第二个提示是为每个感兴趣的特定功能寻找注释。人们经常说函数可以休眠(如果存在注释,无论如何)。
    【解决方案2】:

    你知道函数是否可以休眠,因为你知道它是否可以从中断上下文中调用,调用它时需要什么保证(锁,RCU),最后你会看到它自己能做什么。

    没有办法阅读周围的代码和至少少数消费者。

    如果典型的代码断言需求,事情会更容易,但不幸的是,在 Linux 中并非如此。

    【讨论】:

      猜你喜欢
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2010-10-26
      • 2022-01-04
      相关资源
      最近更新 更多