2012-02-17 18 views
1

CDデバイス用のLinuxブロックデバイスドライバを開発しました。ドライバはうまくいっていますが、現在はSMPシステム上で動作する必要があります。 SMPシステムでテストを実行したとき、ドライバのパフォーマンスが低下することがわかりました。 DATA CDのビットレートはシングルコアシステムに比べて大幅に低下しています。だから、私はSMPを安全にするためにドライバを修正する必要があることを理解しています。私のドライバでSMPシステム用Linuxデバイスドライバ

、私が使用している: 1.カーネルスレッドを 2.ミューテックス 3.セマフォ 4.さまざまな補完

私のSMPシステムである:ARMのCortex-A9デュアルコア600MHzの

この移植を行う際に留意すべきすべての要素を教えてください。

+0

'Documentation/lockstat.txt'ファイルを調べると参考になるでしょう。 (まともなSMP対応カーネルコードの書き方についての完全な答えは意図していませんが、誤ったロックの使用を助けるかもしれません..) – sarnold

答えて

1

通常、SMPシステムの場合、共有リソース(I/Oリソース)とグローバル変数は、タスクの同時実行で上書きしないように処理する必要があります。このために、spin_locks、semaphoresなどを使用できます。一度に1つのコアだけがそのブロック/タスクに対して操作を実行するようにしてください。これは論理的な実装であり、ISR、読み書き操作のような潜在的な危険な領域を特定し、デバイスドライバの複数のエントリポイントと(ドライバの)中央タスクを識別しなければなりません。行く。

関連する問題