Prev: [PATCH 1/2] printk delay for each line break instead of callback
Next: PROBLEM: iwlagn kernel 2.6.32.3 ooops
From: Dave Young on 6 Feb 2010 08:50 printk delay help us to capture printk messages on some unconvenient senarios, but it is still not easy to read. Add another sysctl variable printk_delay_per_lines to make it more readable. We can set the lines according to screen height, then take pictures by camera. kmesg will delay printk_delay_per_lines * printk_delay_msecs milliseconds after every printk_delay_per_lines lines when printk_delay is enabled. Setting the lines by proc/sysctl interface: /proc/sys/kernel/printk_delay_per_lines Andrew, sorry, I have not find time to cleanup the kernel.h sysctl variables. If I'm free I will try to do it. The value range from 1 - 100, default value is 1 Signed-off-by: Dave Young <hidave.darkstar(a)gmail.com> --- Documentation/sysctl/kernel.txt | 9 +++++++++ include/linux/kernel.h | 1 + kernel/printk.c | 12 +++++++++++- kernel/sysctl.c | 9 +++++++++ 4 files changed, 30 insertions(+), 1 deletions(-) --- linux-2.6.orig/Documentation/sysctl/kernel.txt 2010-02-02 13:38:09.517495705 +0800 +++ linux-2.6/Documentation/sysctl/kernel.txt 2010-02-02 13:40:47.657480122 +0800 @@ -374,6 +374,15 @@ Value from 0 - 10000 is allowed. ============================================================== +printk_delay_per_lines: + +Delay printk message every printk_delay_per_lines lines +in printk_delay * printk_delay_per_lines milliseconds + +Value from 1 - 100 is allowed. + +============================================================== + randomize-va-space: This option can be used to select the type of process address --- linux-2.6.orig/include/linux/kernel.h 2010-02-02 13:38:09.537495564 +0800 +++ linux-2.6/include/linux/kernel.h 2010-02-02 13:40:47.657480122 +0800 @@ -246,6 +246,7 @@ extern bool printk_timed_ratelimit(unsig unsigned int interval_msec); extern int printk_delay_msec; +extern int printk_delay_per_lines; /* * Print a one-time message (analogous to WARN_ONCE() et al): --- linux-2.6.orig/kernel/printk.c 2010-02-02 13:39:19.446657319 +0800 +++ linux-2.6/kernel/printk.c 2010-02-02 13:40:47.660813615 +0800 @@ -656,16 +656,26 @@ static int new_text_line = 1; static char printk_buf[1024]; int printk_delay_msec __read_mostly; +int printk_delay_per_lines __read_mostly; static inline void printk_delay(void) { if (unlikely(printk_delay_msec)) { - int m = printk_delay_msec; + static int m, l; + if (!l) + l = printk_delay_per_lines; + + if (--l) { + m += printk_delay_msec; + return; + } + m += printk_delay_msec; while (m--) { mdelay(1); touch_nmi_watchdog(); } + m = 0; } } --- linux-2.6.orig/kernel/sysctl.c 2010-02-02 13:38:09.507495705 +0800 +++ linux-2.6/kernel/sysctl.c 2010-02-02 13:40:47.660813615 +0800 @@ -684,6 +684,15 @@ static struct ctl_table kern_table[] = { .extra1 = &zero, .extra2 = &ten_thousand, }, + { + .procname = "printk_delay_per_lines", + .data = &printk_delay_per_lines, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = &one, + .extra2 = &one_hundred, + }, #endif { .procname = "ngroups_max", -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |