gpt4 book ai didi

linux-kernel - 保护多处理器中的共享内存区域

转载 作者:行者123 更新时间:2023-12-04 21:58:30 25 4
gpt4 key购买 nike

情况是我有 2 个板通过 PCIE 总线连接在一起。一 block 板是根端口,一 block 板是端点。端点端向根端口端导出内存区域。

两 block 板之间的通信是通过软件消息队列实现的。队列元数据和缓冲区都位于导出的内存区域内。

双方可以同时访问内存区域(根端口通过其 PCIE 总线,端点通过其本地总线)。当双方尝试更新队列元数据时,这可能会导致问题。

起初,我试图在同一个导出的内存区域上分配一个spinlock_t,但是因为每个板都是单处理器的,所以spinlock_t无论如何都没有分配。

任何人都可以建议一种保护共享区域的机制或推荐其他方法来在两个板之间进行通信。任何建议表示赞赏。非常感谢!

最佳答案

感谢您到目前为止的兴趣。

我们终于实现了循环队列的共享内存通信。实现可以引用这个link .我们将问题简化为单个生产者单个消费者,因此循环队列不需要锁来保护。这种方法的局限性是我们必须为每个对等连接创建一个队列。

在PCIE规范中,也有描述原子操作的部分,遗憾的是我们的PCIE主机 Controller 不支持这个特性,所以我们不能使用这个特性。

关于linux-kernel - 保护多处理器中的共享内存区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14352925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com