我有一个例程,它切换GPIO引脚的高/低,并在高和低之间有延迟(使用udelay),然后对GPIO状态采样一段时间。我需要确保这部分代码不会被调度器或任何可能的中断抢先执行。我在一个双核ARM系统上运行代码,所以它应该是SMP。对于这样的目的,Spin_Lock_IrqSave()是否足够安全?我有一种感觉,我的代码仍然以某种方式偶尔被中断,但还没有证据。
非常感谢。
发布于 2012-09-26 11:31:19
如果要禁用抢占,请使用preempt_disable()和preempt_enable()。如果要禁用中断,请使用local_irq_disable()和local_irq_enable()
spin_lock_irqsave通常会同时做这两件事,尽管一些“实时”增强有时会允许自旋锁调度,所以最好是说出你的意思。
https://stackoverflow.com/questions/12583737
复制相似问题