2011-11-09 100 views
2

我想知道如何将task_struct添加到Linux内核模块中的等待队列中?例如,如果我想将task_struct称为任务添加到WaitQueue,我可以使用什么函数来实现此目的?添加到等待队列

我知道如何将当前模块添加到等待队列中,但我想将其他正在运行的进程添加到队列中,例如,如果vi正在运行,我需要将其添加到等待队列中。

+0

你应该澄清这个问题,我不明白'物品'是什么。提及您尝试使用的API以及您正在尝试完成的内容。 –

+0

基本上我需要知道如何将task_struct添加到等待队列 – steve

回答

3

您可以使用wait_event*()函数使等待队列上的当前任务块成功。见this tutorial,章节'6.2.2。简单的睡眠'。

+0

好吧,所以我有一个等待队列叫做wait定义在我的模块中。如果我调用类似于:'wait_event_timeout(wait,somecondition,30 * HZ)'(我需要在30秒后唤醒进程)。这是如何知道我想添加到等待队列wait wait的具体任务? – steve

+0

它只阻塞调用'wait_event *()'的任务,即'current'任务,这意味着如果你想让一个任务在这个等待队列上休眠,你必须获得它的执行上下文。最常用的方法是实现一个'/ proc'或'/ sys'文件并让你的程序打开/读/写它。 –