情况是我有 2 块板通过 PCIE 总线连接在一起。一块板是根端口,一块板是端点。端点端将内存区域导出到根端口端。
两块板之间的通信是通过软件消息队列实现的。队列元数据和缓冲区都位于导出的内存区域内。
双方可以同时访问内存区域(根端口通过其 PCIE 总线,端点通过其本地总线)。当双方尝试更新队列元数据时,这可能会导致问题。
起初,我试图spinlock_t
在同一个导出的内存区域上分配一个,但是因为每个板都是单处理器,the spinlock_t
所以无论如何都没有分配。
任何人都可以建议一种机制来保护共享区域或推荐其他方法来在两个板之间进行通信。任何建议表示赞赏。非常感谢!