gpt4 book ai didi

c - 在 ISR 中使用全局变量来标记执行是否安全

转载 作者:行者123 更新时间:2023-12-04 11:20:57 24 4
gpt4 key购买 nike

<分区>

我知道不同的架构可能会提供不同的方式让开发人员检测 cpu 现在是否在 ISR 中运行,例如读取寄存器。

但我确实发现在一些 BSP 代码中,他们使用一个全局变量,称为 g_in_isr,作为指示 cpu 是否运行在 ISR 中的标志。当中断发生时,中断处理程序将在进入时执行g_in_isr++ 操作,在退出时执行g_in_isr--

我想知道这种方式在允许嵌套中断的架构上是否安全。在大多数架构中,g_in_isr++g_in_isr-- 不是原子操作(我说得对吗?),如果在现有中断处理程序正在执行时发生高优先级中断怎么办 g_in_isr++ 操作?它不会引起问题吗?

更新(2016-03-27)

是的,我知道它依赖于体系结构,但我想知道一般情况。让我们假设 g_in_isr++ 不是原子的,它在大多数架构上确实不是原子的,对吗?当然,我们也不使用任何编译器魔术来使其成为原子。

现在这样的话,会不会出问题?

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