Re: [RFC 2/2] printk: Add more information about the printk caller

From: Petr Mladek
Date: Thu Sep 24 2020 - 08:53:05 EST


On Thu 2020-09-24 06:24:14, Ahmed S. Darwish wrote:
> On Wed, Sep 23, 2020 at 03:56:17PM +0200, Petr Mladek wrote:
> ...
> >
> > -static inline u32 printk_caller_id(void)
> > +static enum printk_caller_ctx get_printk_caller_ctx(void)
> > +{
> > + if (in_nmi())
> > + return printk_ctx_nmi;
> > +
> > + if (in_irq())
> > + return printk_ctx_hardirq;
> > +
> > + if (in_softirq())
> > + return printk_ctx_softirq;
> > +
> > + return printk_ctx_task;
> > +}
> > +
>
> in_softirq() here will be true for both softirq contexts *and*
> BH-disabled regions. Did you mean in_serving_softirq() instead?

Good question!

I am not sure if people would want to distinguish these two
situations.

Otherwise, I think that is_softirq() more close to the meaning of
in_irq(). They both describe a context where a new interrupt has
to wait until the handling gets enabled again.

Best Regards,
Petr