On 1/24/20 1:51 PM, Waiman Long wrote: >> You can use the in_task() macro in include/linux/preempt.h. This is >> just a percpu preempt_count read and test. If in_task() is false, it >> is in a {soft|hard}irq or nmi context. If it is true, you can check >> the rt_task() macro to see if it is an RT task. That will access to >> the current task structure. So it may cost a little bit more if you >> want to handle the RT task the same way. >> > We may not need to do that for softIRQ context. If that is the case, you > can use in_irq() which checks for hardirq and nmi only. Peter, what is > your thought on that? In second thought, we should do that for softIRQ as well. Also, we may want to also check if irqs_disabled() is true as well by calls like spin_lock_irq() or spin_lock_irqsave(). We do not want to unnecessarily prolong the irq off period. Cheers, Longman