Skip to content
  • Tejun Heo's avatar
    printk: implement support for extended console drivers · 6fe29354
    Tejun Heo authored
    
    
    printk log_buf keeps various metadata for each message including its
    sequence number and timestamp.  The metadata is currently available only
    through /dev/kmsg and stripped out before passed onto console drivers.  We
    want this metadata to be available to console drivers too so that console
    consumers can get full information including the metadata and dictionary,
    which among other things can be used to detect whether messages got lost
    in transit.
    
    This patch implements support for extended console drivers.  Consoles can
    indicate that they want extended messages by setting the new CON_EXTENDED
    flag and they'll be fed messages formatted the same way as /dev/kmsg.
    
     "<level>,<sequnum>,<timestamp>,<contflag>;<message text>\n"
    
    If extended consoles exist, in-kernel fragment assembly is disabled.  This
    ensures that all messages emitted to consoles have full metadata including
    sequence number.  The contflag carries enough information to reassemble
    the fragments from the reader side trivially.  Note that this only affects
    /dev/kmsg.  Regular console and /proc/kmsg outputs are not affected by
    this change.
    
    * Extended message formatting for console drivers is enabled iff there
      are registered extended consoles.
    
    * Comment describing /dev/kmsg message format updated to add missing
      contflag field and help distinguishing variable from verbatim terms.
    
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: David Miller <davem@davemloft.net>
    Cc: Kay Sievers <kay@vrfy.org>
    Reviewed-by: default avatarPetr Mladek <pmladek@suse.cz>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6fe29354