4
情況是我有兩塊板通過PCIE總線連接在一起。一個板是根端口,一個板是端點。端點端將一個內存區域導出到根端口。保護多處理器中的共享內存區域
兩塊板卡之間的通信是通過軟件消息隊列實現的。隊列元數據和緩衝區都位於導出的內存區域內。
雙方可以同時訪問內存區域(根端口通過它的PCIE總線,端點通過它的本地總線)。當雙方嘗試更新隊列元數據時,這可能會導致問題。首先,我試圖在相同的輸出內存區域分配一個spinlock_t
,但由於每個板卡都是單處理器,所以the spinlock_t
仍然未被分配。
有人可以請建議一種機制來保護共享區域或推薦其他方法在兩塊電路板之間進行通信。任何建議表示讚賞。非常感謝!
我想你應該嘗試用信號量來代替螺旋鎖......因爲在單處理器系統中螺旋鎖沒有用處! – akp