据我所知,在中断上下文中,我们不应该调用可以睡眠的函数。
那么,是否有文档,约定,线索或任何简单的方法来确定内核中的某些函数是否可以睡眠?
答案 0 :(得分:2)
一个主要的提示是对might_sleep
的调用,大多数核心内核函数都称之为早期捕获虚假调用者的方式。您还可以查找schedule
及其变体的来电。
答案 1 :(得分:0)
你知道函数是否可以休眠,因为你知道它是否可以从一个中断上下文中调用,在调用它时需要什么保证(锁,RCU),最后你会看到它自己做了什么。
无法阅读周围的代码和至少很少的消费者。
如果典型的代码断言要求,东西会更容易,但不幸的是在Linux中并非如此。