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.