]> git.openpandora.org Git - pandora-kernel.git/commitdiff
printk: implement support for extended console drivers
authorTejun Heo <tj@kernel.org>
Thu, 25 Jun 2015 22:01:30 +0000 (15:01 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Jun 2015 00:00:38 +0000 (17:00 -0700)
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: Tejun Heo <tj@kernel.org>
Cc: David Miller <davem@davemloft.net>
Cc: Kay Sievers <kay@vrfy.org>
Reviewed-by: Petr Mladek <pmladek@suse.cz>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Documentation/ABI/testing/dev-kmsg
include/linux/console.h
kernel/printk/printk.c

index bb820be48179000dd85472ca5d02286778880aeb..fff817efa508f529559ac199bc3b5507dfd7a325 100644 (file)
@@ -98,4 +98,13 @@ Description: The /dev/kmsg character device node provides userspace access
                logic is used internally when messages are printed to the
                console, /proc/kmsg or the syslog() syscall.
 
+               By default, kernel tries to avoid fragments by concatenating
+               when it can and fragments are rare; however, when extended
+               console support is enabled, the in-kernel concatenation is
+               disabled and /dev/kmsg output will contain more fragments. If
+               the log consumer performs concatenation, the end result
+               should be the same. In the future, the in-kernel concatenation
+               may be removed entirely and /dev/kmsg users are recommended to
+               implement fragment handling.
+
 Users:         dmesg(1), userspace kernel log consumers
Simple merge
Simple merge