据我所知,有很多机制可以在Linux中实现下半部分:
所有这些都具有关于可调度性的特征。 我从文献中得不到的是他们的抢占可能性。什么样的任务可以抢占各种不同的下半部分实现?
更具体地说,我对线程irqs和工作队列很感兴趣。人们可以确信,一旦安排线程irq或工作队列在完成之前没有被抢占,即一次运行?有哪些类型的任务能够抢占它们?
例如,罗伯特·洛夫的Linux内核开发表明,只有上半部分可以抢占softirqs,所以我会说softirqs大部分时间都是一次性完成(或者如果它们被抢先一次,它只能在非常短的时间内完成)。
我的目标是定性评估同一线程irq或工作队列中两个操作之间的时间。特别是i2c数据读取和读取系统时钟之间的时间。
感谢。
答案 0 :(得分:0)
Worqueues和线程IRQ处理程序在进程上下文中运行,可以被抢占。当它们被抢占时,实际上取决于您的内核配置(CONFIG_PREEMPT
或CONFIG_PREEMPT_VOLUNTARY
)以及您在处理线程上设置的实时优先级。
你不能假设你的工作队伍或你的下半部分不会被打断。这意味着如果您与上半部分共享资源,则必须使用正确的锁定。