Re: preempt.h: some SOFTIRQ_OFFSET should be SOFTIRQ_MASK?

From: Frederic Weisbecker
Date: Tue Feb 12 2019 - 23:08:34 EST


On Tue, Feb 05, 2019 at 07:34:31PM +0100, Denys Vlasenko wrote:
> SOFTIRQ is a counter.
> Why here:
>
> #define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET)
> #define in_task() (!(preempt_count() & \
> (NMI_MASK | HARDIRQ_MASK | SOFTIRQ_OFFSET)))
>
> we check only lowest bit?

So we have SOFTIRQ_OFFSET that is used when serving softirqs.
And we have SOFTIRQ_DISABLE_OFFSET that is used when we disable
softirqs.

I think the choice is right on both tests above, or am I missing something?