2011-11-09 99 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'文件並讓你的程序打開/讀/寫它。 –