Messages in this thread | | | Date | Thu, 24 Sep 2020 15:38:50 +0200 | From | Petr Mladek <> | Subject | Re: [RFC 2/2] printk: Add more information about the printk caller |
| |
On Thu 2020-09-24 14:53:01, Petr Mladek wrote: > 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.
Grrrr, I wonder why I thought that in_irq() covered also the situation when IRQ was disabled. It was likely my wish because disabled interrupts are problem for printk() because the console might cause a softlockup.
in_irq() actually behaves like in_serving_softirq().
I am confused and puzzled now. I wonder what contexts are actually interesting for developers. It goes back to the ideas from Sergey about preemption disabled, ...
/me feels shameful and is going to hide under a stone.
Best Regards, Petr
| |