状況は、PCIE バスを介して一緒に接続された 2 つのボードがあることです。1 つのボードがルートポートで、1 つのボードがエンドポイントです。エンドポイント側は、メモリ領域をルートポート側にエクスポートしました。
2 つのボード間の通信は、ソフトウェア メッセージ キューを介して実装されます。キューのメタデータとバッファはすべて、エクスポートされたメモリ領域内に配置されます。
両側が同時にメモリ領域にアクセスできます (ルートポートは PCIE バス経由、エンドポイントはローカル バス経由)。これにより、両側でキューのメタデータを更新しようとすると問題が発生する可能性があります。
最初はspinlock_t
、同じエクスポートされたメモリ領域に を割り当てようとしましたが、各ボードがユニプロセッサでthe spinlock_t
あるため、とにかく割り当てられません。
誰かが共有領域を保護するメカニズムを提案するか、2 つのボード間で通信するための他のアプローチを推奨してください。任意の推奨事項をいただければ幸いです。どうもありがとう!