On 1/24/20 1:51 PM, Waiman Long wrote:
quoted
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
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel