2011-11-09 10 views
2

task_structをLinuxカーネルモジュールの待機待ち行列に追加する方法を知りましたか?たとえば、task_structというタスクをWaitQueueに追加する場合は、これを実現するためにどのような機能を使用できますか?待ち行列に追加する

私は現在のモジュールを待ち行列に追加する方法を理解していますが、実行中の他のプロセスを待ち行列に追加する必要があります。たとえば、稼働中の場合は待ち行列に追加する必要があります。

+0

質問を明確にする必要があります。「アイテム」が何であるか分かりません。使用しようとしているAPIと達成しようとしているAPIについて言及してください。 –

+0

基本的に私は待ち行列にtask_structを追加する方法を知る必要があります – steve

答えて

3

wait_event*()機能を使用して、現在のタスクブロックを待機キューに入れることができます。 this tutorialのセクション6.2.2を参照してください。シンプルスリーピング '。

+0

ok、私は私のモジュールで定義された待ちと呼ばれる待ち行列を持っています。 'wait_event_timeout(wait、somecondition、30 * HZ)'のようなものを呼び出すと(30秒が経過してから復帰するプロセスが必要です)。待ち行列に追加したい特定のタスクがどのくらい待っているかは、どのようにわかりますか? – steve

+0

これは 'wait_event *()'を呼び出すタスク、つまり 'current'タスクのみをブロックします。つまり、その待ちキューでタスクをスリープさせたい場合は、その実行コンテキストを保持する必要があります。最も標準的な方法は、 '/ proc'または'/sys'ファイルを実装し、あなたのプログラムがそれをオープン/リード/ライトするようにすることです。 –

関連する問題