gpt4 book ai didi

multithreading - local_bh_disable, preempt_disable, local_irq_disable

转载 作者:行者123 更新时间:2023-12-04 06:40:46 25 4
gpt4 key购买 nike

local_bh_disable禁用下半部分(softirqs)的处理。 Softirq 在中断返回路径或 ksoftirqd-(per cpu)-thread 上进行处理,如果系统遭受严重的 softirq-load,该线程将被唤醒。
preempt_disable禁用抢占,这意味着当线程在 preempt_disable 内执行时<-> preemt_enable范围,它不会被调度程序置于 sleep 状态。
这意味着,如果当前线程在该范围内时发生系统定时器中断,它可能会更新调度程序的计费表,但不会将上下文切换到另一个线程。这包括softirqd。
local_irq_disablelocal_irq_save禁用本地 cpu 的中断。这意味着本地 cpu 不会对任何 irq 使用react,因此它不会运行任何中断返回路径,因此无法在那里运行 softirq。

假设我的上述陈述是正确的(我不确定),那么调用 local_bh_disable 不是多余的在您调用 preempt_disable 之后和 local_irq_save (在进程上下文中)?

最佳答案

是的。一旦调用了 local_irq_save/disable,就不需要进一步的保护——你不会被打断(除了 NMI 或代码中的异常)。

但是,您通常会发现一些代码被设计为可从不同的上下文调用,因此它们可能会为某些最终在某些路径中冗余的子操作提供保护。

关于multithreading - local_bh_disable, preempt_disable, local_irq_disable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24260087/

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