Sergey Senozhatsky wrote:
> On (04/26/18 12:06), Petr Mladek wrote:
> > 
> > > Petr, Steven, Fengguang, what do you think? Do you have any objections?
> > > Ideas?
> > 
> > I wonder if we could create some mechanism that would help to extend
> > struct printk_log easier in the future.
> 
> Hm, interesting idea.
> 
> > I know only about crash tool implementation. It uses information provided
> > by log_buf_vmcoreinfo_setup(). The size of the structure is already
> > public. Therefore crash should be able to find all existing information
> > even if we increase the size of the structure.
> > 
> > log_buf_vmcoreinfo_setup() even allows to inform about newly added
> > structure items. We could probably extend it to inform also about
> > the offset of the new optional elements.
> 
> I vaguely remember that the last time Thomas Gleixner modified
> printk_log you managed to find a case that broke crash tool.
> ... Or may be I'm mistaken.
> 
> > I am not sure about other tools. But I think that it should be
> > doable.
> 
> Good. So there are no objections, so far.
> 
> Tetsuo, Dmitry, care to send a patch?
> 
>       -ss
> 

What I meant is nothing but something like below (i.e. inject context ID before
string to print)

  -sprintf(printk_buf + offset, "[ %s] %s", stamp, string_to_print);
  +cpu = smp_processor_id()
  +if (in_nmi())
  +  sprintf(printk_buf + offset, "[ %s](N%u) %s", stamp, cpu, string_to_print);
  +else if (in_irq())
  +  sprintf(printk_buf + offset, "[ %s](I%u) %s", stamp, cpu, string_to_print);
  +else if (in_serving_softirq())
  +  sprintf(printk_buf + offset, "[ %s](S%u) %s", stamp, cpu, string_to_print);
  +else
  +  sprintf(printk_buf + offset, "[ %s](%u) %s", stamp, current->pid, 
string_to_print);

without touching any struct.

Reply via email to