]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - kernel/printk.c
printk: robustify printk
[linux-2.6-omap-h63xx.git] / kernel / printk.c
index b51b1567bb5570dfc5b4a19bffd5af865d254e77..655cc2ca10cc82e88d5472789ea3a34b4f21bb20 100644 (file)
@@ -982,10 +982,25 @@ int is_console_locked(void)
        return console_locked;
 }
 
-void wake_up_klogd(void)
+static DEFINE_PER_CPU(int, printk_pending);
+
+void printk_tick(void)
 {
-       if (!oops_in_progress && waitqueue_active(&log_wait))
+       if (__get_cpu_var(printk_pending)) {
+               __get_cpu_var(printk_pending) = 0;
                wake_up_interruptible(&log_wait);
+       }
+}
+
+int printk_needs_cpu(int cpu)
+{
+       return per_cpu(printk_pending, cpu);
+}
+
+void wake_up_klogd(void)
+{
+       if (waitqueue_active(&log_wait))
+               __get_cpu_var(printk_pending) = 1;
 }
 
 /**