gpt4 book ai didi

linux - 在 linux 中,如何确保不间断地执行一系列代码

转载 作者:IT王子 更新时间:2023-10-29 00:33:01 25 4
gpt4 key购买 nike

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

非常感谢。

最佳答案

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

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

关于linux - 在 linux 中,如何确保不间断地执行一系列代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12583737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com