我有一个队列,当不同的中断发生时,会调用队列的 put 和 pull 函数。在这种情况下有没有办法防止竞争情况?
虽然我们不能在中断服务例程中等待信号量,但创建类似功能的最佳方法是什么。
我们使用 Zynq FPGA 的 ARM-Cortex A5 处理器来开发代码。
假设每个中断都会导致处理器的“中断禁用”状态打开,并且假设你正在处理的中断具有相同的优先级(即一个不能中断另一个的执行),那么已经有可以没有竞争条件,并且您的 ISR 只能访问共享队列。
(当中断发生时,处理器进入中断禁用模式,将所有寄存器压入堆栈,跳转到 ISR 入口点并在那里继续执行。一旦 ISR 完成,“iret”指令就会执行与入口相反的操作。这个简单的描述可以在不同的处理器和平台中以不同的方式实现。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)