1

Linux デバイス ドライバーの作成は初めてで、UART チップを処理するデバイス ドライバーを作成しようとしています。このために、UART チップから取得したデータを処理するときにいくつかのセマフォを使用する必要があるため、下半分の処理としてワーク キューを使用することにしました。割り込みで以前にスケジュールされたワーク キュー ハンドラが実行されるようになり、実行中はセマフォでスリープします。この間、割り込みハンドラーが再度呼び出され、同じワーク キュー ハンドラーをスケジュールします。ワーク キュー ハンドラは、最初の実行が終了する前に再度実行されますか?

ありがとう。

4

1 に答える 1

0

ワーク キューのデフォルトの動作は、異なる CPU での同時実行を許可することです。この動作を変更するフラグ WQ_NON_REENTRANT があります。詳細については、この投稿http://lwn.net/Articles/403891/を参照してください。

しかし、最近のカーネルでは、作業キューはデフォルトで再入不可になっているようです - http://lwn.net/Articles/511190を参照してください

于 2012-12-29T21:06:18.920 に答える