task_struct
をLinuxカーネルモジュールの待機待ち行列に追加する方法を知りましたか?たとえば、task_struct
というタスクをWaitQueue
に追加する場合は、これを実現するためにどのような機能を使用できますか?待ち行列に追加する
私は現在のモジュールを待ち行列に追加する方法を理解していますが、実行中の他のプロセスを待ち行列に追加する必要があります。たとえば、稼働中の場合は待ち行列に追加する必要があります。
task_struct
をLinuxカーネルモジュールの待機待ち行列に追加する方法を知りましたか?たとえば、task_struct
というタスクをWaitQueue
に追加する場合は、これを実現するためにどのような機能を使用できますか?待ち行列に追加する
私は現在のモジュールを待ち行列に追加する方法を理解していますが、実行中の他のプロセスを待ち行列に追加する必要があります。たとえば、稼働中の場合は待ち行列に追加する必要があります。
wait_event*()
機能を使用して、現在のタスクブロックを待機キューに入れることができます。 this tutorialのセクション6.2.2を参照してください。シンプルスリーピング '。
ok、私は私のモジュールで定義された待ちと呼ばれる待ち行列を持っています。 'wait_event_timeout(wait、somecondition、30 * HZ)'のようなものを呼び出すと(30秒が経過してから復帰するプロセスが必要です)。待ち行列に追加したい特定のタスクがどのくらい待っているかは、どのようにわかりますか? – steve
これは 'wait_event *()'を呼び出すタスク、つまり 'current'タスクのみをブロックします。つまり、その待ちキューでタスクをスリープさせたい場合は、その実行コンテキストを保持する必要があります。最も標準的な方法は、 '/ proc'または'/sys'ファイルを実装し、あなたのプログラムがそれをオープン/リード/ライトするようにすることです。 –
質問を明確にする必要があります。「アイテム」が何であるか分かりません。使用しようとしているAPIと達成しようとしているAPIについて言及してください。 –
基本的に私は待ち行列にtask_structを追加する方法を知る必要があります – steve