linux下半部分抢占

时间:2013-11-03 00:28:21

标签: linux linux-kernel scheduled-tasks linux-device-driver embedded-linux

据我所知,有很多机制可以在Linux中实现下半部分:

  • 的softirq
  • taslket
  • 工作队列
  • thre irq(request_threaded_irq())

所有这些都具有关于可调度性的特征。 我从文献中得不到的是他们的抢占可能性。什么样的任务可以抢占各种不同的下半部分实现?

更具体地说,我对线程irqs和工作队列很感兴趣。人们可以确信,一旦安排线程irq或工作队列在完成之前没有被抢占,即一次运行?有哪些类型的任务能够抢占它们?

例如,罗伯特·洛夫的Linux内核开发表明,只有上半部分可以抢占softirqs,所以我会说softirqs大部分时间都是一次性完成(或者如果它们被抢先一次,它只能在非常短的时间内完成)。

我的目标是定性评估同一线程irq或工作队列中两个操作之间的时间。特别是i2c数据读取和读取系统时钟之间的时间。

感谢。

1 个答案:

答案 0 :(得分:0)

Worqueues和线程IRQ处理程序在进程上下文中运行,可以被抢占。当它们被抢占时,实际上取决于您的内核配置(CONFIG_PREEMPTCONFIG_PREEMPT_VOLUNTARY)以及您在处理线程上设置的实时优先级。

你不能假设你的工作队伍或你的下半部分不会被打断。这意味着如果您与上半部分共享资源,则必须使用正确的锁定。