aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Mladek <pmladek@suse.com>2018-06-27 10:08:16 -0400
committerPetr Mladek <pmladek@suse.com>2018-07-09 08:08:13 -0400
commita338f84dc196f44b63ba0863d2f34fd9b1613572 (patch)
tree054a458fe019c4c5fc66cdcf4917b762fb4a6663
parentba552399954dde1b388f7749fecad5c349216981 (diff)
printk: Create helper function to queue deferred console handling
It is just a preparation step. The patch does not change the existing behavior. Link: http://lkml.kernel.org/r/20180627140817.27764-3-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>
-rw-r--r--kernel/printk/printk.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index a844c611b17c..1d1513215c22 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2887,16 +2887,20 @@ void wake_up_klogd(void)
2887 preempt_enable(); 2887 preempt_enable();
2888} 2888}
2889 2889
2890int vprintk_deferred(const char *fmt, va_list args) 2890void defer_console_output(void)
2891{ 2891{
2892 int r;
2893
2894 r = vprintk_emit(0, LOGLEVEL_SCHED, NULL, 0, fmt, args);
2895
2896 preempt_disable(); 2892 preempt_disable();
2897 __this_cpu_or(printk_pending, PRINTK_PENDING_OUTPUT); 2893 __this_cpu_or(printk_pending, PRINTK_PENDING_OUTPUT);
2898 irq_work_queue(this_cpu_ptr(&wake_up_klogd_work)); 2894 irq_work_queue(this_cpu_ptr(&wake_up_klogd_work));
2899 preempt_enable(); 2895 preempt_enable();
2896}
2897
2898int vprintk_deferred(const char *fmt, va_list args)
2899{
2900 int r;
2901
2902 r = vprintk_emit(0, LOGLEVEL_SCHED, NULL, 0, fmt, args);
2903 defer_console_output();
2900 2904
2901 return r; 2905 return r;
2902} 2906}