printk: Add KERN_DEFAULT printk log-level
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 16 Jun 2009 18:02:28 +0000 (11:02 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 16 Jun 2009 18:02:28 +0000 (11:02 -0700)
This adds a KERN_DEFAULT loglevel marker, for when you cannot decide
which loglevel you want, and just want to keep an existing printk
with the default loglevel.

The difference between having KERN_DEFAULT and having no log-level
marker at all is two-fold:

 - having the log-level marker will now force a new-line if the
   previous printout had not added one (perhaps because it forgot,
   but perhaps because it expected a continuation)

 - having a log-level marker is required if you are printing out a
   message that otherwise itself could perhaps otherwise be mistaken
   for a log-level.

Signed-of-by: Linus Torvalds <torvalds@linux-foundation.org>

include/linux/kernel.h
kernel/printk.c

index 066bb1e..1b2e174 100644 (file)
@@ -97,6 +97,8 @@ extern const char linux_proc_banner[];
 #define        KERN_INFO       "<6>"   /* informational                        */
 #define        KERN_DEBUG      "<7>"   /* debug-level messages                 */
 
+/* Use the default kernel loglevel */
+#define KERN_DEFAULT   "<d>"
 /*
  * Annotation for a "continued" line of log printout (only done after a
  * line that had no enclosing \n). Only to be used by core/arch code
index a87770c..b4d97b5 100644 (file)
@@ -696,6 +696,8 @@ asmlinkage int vprintk(const char *fmt, va_list args)
                        switch (c) {
                        case '0' ... '7': /* loglevel */
                                current_log_level = c - '0';
+                       /* Fallthrough - make sure we're on a new line */
+                       case 'd': /* KERN_DEFAULT */
                                if (!new_text_line) {
                                        emit_log_char('\n');
                                        new_text_line = 1;