lkml.org 
[lkml]   [2012]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH_V2 1/2] fix the bug that printk can't support printk(KERN_LEVEL)
    From
    Date
    From: he bo <bo.he@intel.com>

    Usually, there is a special scenario that developer wants to
    call printk to just set up a log level (might be transferred
    here as a parameter from upper level), then, later calling
    of printk prints out real string with the same log level
    continuously.

    Current function vprintk has an issue to support this capability.
    When the whole string in one calling to printk is just a log level,
    it ignores it.

    Signed-off-by: he, bo <bo.he@intel.com>
    Reviewed-by: Zhang, Yanmin <yanmin.zhang@intel.com>
    ---
    kernel/printk.c | 7 ++++---
    1 files changed, 4 insertions(+), 3 deletions(-)

    diff --git a/kernel/printk.c b/kernel/printk.c
    index b663c2c..473afdb 100644
    --- a/kernel/printk.c
    +++ b/kernel/printk.c
    @@ -909,7 +909,7 @@ asmlinkage int vprintk(const char *fmt, va_list args)
    * Copy the output into log_buf. If the caller didn't provide
    * the appropriate log prefix, we insert them here
    */
    - for (; *p; p++) {
    + for (; plen || *p; p++) {
    if (new_text_line) {
    new_text_line = 0;

    @@ -920,6 +920,7 @@ asmlinkage int vprintk(const char *fmt, va_list args)
    for (i = 0; i < plen; i++)
    emit_log_char(printk_buf[i]);
    printed_len += plen;
    + plen = 0;
    } else {
    /* Add log prefix */
    emit_log_char('<');
    @@ -946,10 +947,10 @@ asmlinkage int vprintk(const char *fmt, va_list args)
    printed_len += tlen;
    }

    - if (!*p)
    - break;
    }

    + if (!*p)
    + break;
    emit_log_char(*p);
    if (*p == '\n')
    new_text_line = 1;
    --
    1.7.1




    \
     
     \ /
      Last update: 2012-03-26 03:39    [W:0.023 / U:0.200 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site