首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux中,如何确保代码序列在不中断的情况下执行

在linux中,如何确保代码序列在不中断的情况下执行
EN

Stack Overflow用户
提问于 2012-09-25 21:12:43
回答 1查看 231关注 0票数 5

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

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2012-09-26 11:31:19

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

spin_lock_irqsave通常会同时做这两件事,尽管一些“实时”增强有时会允许自旋锁调度,所以最好是说出你的意思。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12583737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档