5

我有一个程序可以切换 GPIO 引脚高/低,并在高低之间有延迟(使用udelay),然后在一段时间内对 GPIO 状态进行采样。我需要确保这部分代码的执行不会被调度程序或任何可能的中断抢占。我在双核 ARM 系统上运行代码,所以它应该是 SMP。对于这样的目的是否Spin_Lock_IrqSave()足够安全?我有一种感觉,我的代码仍然偶尔会被打断,但还没有证据。

非常感谢。

4

1 回答 1

4

如果要禁用抢占,请使用preempt_disable()preempt_enable()。如果要禁用中断,请使用local_irq_disable()local_irq_enable()

spin_lock_irqsave 通常会同时执行这两项操作,尽管某些“实时”增强功能有时允许自旋锁进行调度,因此最好说出您的意思。

于 2012-09-26T03:31:19.067 回答