【问题标题】:what happens when the tasklet is interrupted by a hardware interrupt?当小任务被硬件中断中断时会发生什么?
【发布时间】:2015-04-21 18:30:55
【问题描述】:

我想知道这部分。 我们知道 tasklet 不能休眠,那么如果 HW 中断进来,那么 tasklet 会发生什么?

我正面临崩溃,其中 tasklet 被硬件中断中断。 我在我的 tasklet 中使用了自旋锁。

我应该使用 spinlock_irq_save 吗?

请告诉我。

【问题讨论】:

  • 如果可以解决您的疑问,请接受答案
  • 你想用“自旋锁”保护什么?通常你可以构造一些东西,所以这并不重要。虽然spinlock_irq_save 可能是一种解决方案,但它会增加整个系统的 IRQ 延迟。即,根据上下文,这可能是个坏主意。

标签: linux-kernel synchronization locking spinlock tasklet


【解决方案1】:

是的,你是对的。小任务可以被硬件中断打断,你应该防止这种情况。通过使用spin_lock_irqsave() 和家人。

参考https://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/c188.html

如果您不这样做并且如果 tasklet 被中断,那么您已经看到发生了什么(崩溃)

【讨论】:

  • 如果你做 spin_lock_irqsave ,你可能会在不知不觉中增加中断延迟。根据 tasklet 定义,它在“中断启用”上下文中运行。两个相同类型的 tasklet 不能同时运行,那么 lock 的用途是什么?我只在共享资源的情况下看到锁,但我无法回忆起一个场景。你能分享一个例子吗?
猜你喜欢
  • 1970-01-01
  • 2011-09-03
  • 1970-01-01
  • 2011-02-23
  • 2023-03-25
  • 2013-02-03
  • 2015-04-29
  • 2013-08-12
  • 2012-02-12
相关资源
最近更新 更多