5

ドライバーの 1 つで発生した「アトミックなスケジュール設定」エラーを追跡しており、ioctl がアトミック コンテキストであるかどうか疑問に思っています。また、アトミック コンテキストに出入りする方法、およびそれらが発生する一般的な場所について誰かが共有するものがあれば、それは役に立ちます。

4

2 に答える 2

10

いいえ、ioctlは通常プロセスコンテキストで実行されます。ドライバーがioctl処理中にスピンロックを取得すると、ドライバーはアトミックコンテキストに入り、スピンロックを解放するまでアトミックコンテキストに留まります。

Linuxのアトミックコンテキストに関する優れた議論については、 http ://lwn.net/Articles/274695/を参照してください。

于 2010-09-02T16:37:15.253 に答える
2

をオンにするCONFIG_DEBUG_SPINLOCK_SLEEPと、スタック トレースを含む、エラーの場所に関する詳細情報が得られる場合があります。

もう 1 つの視点は、どのスリープ関数を呼び出しているかということです。例はmsleep()、などmutex_lock()です。copy_to_user()

于 2010-09-08T04:22:25.753 に答える