是否有一种适当的方法可以使原子部分 100% 确定在此期间不会出现中断?
有没有像
代码:
全选ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
{
...
}
我们在 Linux 内核中进行了 avr 或 spin_lock_irqsave/spin_unlock_irqrestore 调用?
博客|
知乎
代码:
全选sta
tic inline unsigned long arch_local_irq_save(void)
{
unsigned long flags;
asm volatile("rsil %0, 1"
: "=a" (flags) :: "memory");
return flags;
}
static inline void arch_local_irq_restore(unsigned long flags)
{
asm volatile("wsr %0, ps; rsync"
:: "a" (flags) : "memory");
}
rsil 指令中的 1 是我们 lx106 内核的最大正常中断级别。
linux mainline 支持 xtensa,因此您可以在那里查找。