我正在尝试学习如何为linux编写可加载的内核模块。我想知道是否有人能告诉我sleep_on
和wake_up
的功能是什么?
在示例中,我看&WaitQ
总是传递给他们和
static DECLARE_WAIT_QUEUE_HEAD(WaitQ);
在模块的顶部声明。
答案 0 :(得分:2)
如果内核中的某个任务到达了它想要使用资源的位置并且它被告知the resource is currently used by another task
,那么它可以决定进入睡眠状态wake me up when the resource is available again
。这基本上是与sleep_on和wake_up的交易。请参阅此处以获取详细说明:http://www.linuxtopia.org/online_books/Linux_Kernel_Module_Programming_Guide/x1032.html