printk: Split the code for storing a message into the log buffer
It is just a preparation step. The patch does not change the existing behavior. Link: http://lkml.kernel.org/r/20180627140817.27764-2-pmladek@suse.com To: Steven Rostedt <rostedt@goodmis.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> Cc: linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Signed-off-by: Petr Mladek <pmladek@suse.com>
This commit is contained in:
parent
d75ae5bdf2
commit
ba55239995
@ -1824,28 +1824,16 @@ static size_t log_output(int facility, int level, enum log_flags lflags, const c
|
|||||||
return log_store(facility, level, lflags, 0, dict, dictlen, text, text_len);
|
return log_store(facility, level, lflags, 0, dict, dictlen, text, text_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage int vprintk_emit(int facility, int level,
|
/* Must be called under logbuf_lock. */
|
||||||
const char *dict, size_t dictlen,
|
int vprintk_store(int facility, int level,
|
||||||
const char *fmt, va_list args)
|
const char *dict, size_t dictlen,
|
||||||
|
const char *fmt, va_list args)
|
||||||
{
|
{
|
||||||
static char textbuf[LOG_LINE_MAX];
|
static char textbuf[LOG_LINE_MAX];
|
||||||
char *text = textbuf;
|
char *text = textbuf;
|
||||||
size_t text_len;
|
size_t text_len;
|
||||||
enum log_flags lflags = 0;
|
enum log_flags lflags = 0;
|
||||||
unsigned long flags;
|
|
||||||
int printed_len;
|
|
||||||
bool in_sched = false;
|
|
||||||
|
|
||||||
if (level == LOGLEVEL_SCHED) {
|
|
||||||
level = LOGLEVEL_DEFAULT;
|
|
||||||
in_sched = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
boot_delay_msec(level);
|
|
||||||
printk_delay();
|
|
||||||
|
|
||||||
/* This stops the holder of console_sem just where we want him */
|
|
||||||
logbuf_lock_irqsave(flags);
|
|
||||||
/*
|
/*
|
||||||
* The printf needs to come first; we need the syslog
|
* The printf needs to come first; we need the syslog
|
||||||
* prefix which might be passed-in as a parameter.
|
* prefix which might be passed-in as a parameter.
|
||||||
@ -1886,8 +1874,29 @@ asmlinkage int vprintk_emit(int facility, int level,
|
|||||||
if (dict)
|
if (dict)
|
||||||
lflags |= LOG_PREFIX|LOG_NEWLINE;
|
lflags |= LOG_PREFIX|LOG_NEWLINE;
|
||||||
|
|
||||||
printed_len = log_output(facility, level, lflags, dict, dictlen, text, text_len);
|
return log_output(facility, level, lflags,
|
||||||
|
dict, dictlen, text, text_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
asmlinkage int vprintk_emit(int facility, int level,
|
||||||
|
const char *dict, size_t dictlen,
|
||||||
|
const char *fmt, va_list args)
|
||||||
|
{
|
||||||
|
int printed_len;
|
||||||
|
bool in_sched = false;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
if (level == LOGLEVEL_SCHED) {
|
||||||
|
level = LOGLEVEL_DEFAULT;
|
||||||
|
in_sched = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
boot_delay_msec(level);
|
||||||
|
printk_delay();
|
||||||
|
|
||||||
|
/* This stops the holder of console_sem just where we want him */
|
||||||
|
logbuf_lock_irqsave(flags);
|
||||||
|
printed_len = vprintk_store(facility, level, dict, dictlen, fmt, args);
|
||||||
logbuf_unlock_irqrestore(flags);
|
logbuf_unlock_irqrestore(flags);
|
||||||
|
|
||||||
/* If called from the scheduler, we can not call up(). */
|
/* If called from the scheduler, we can not call up(). */
|
||||||
|
Loading…
Reference in New Issue
Block a user