[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100206134056.GB2562@darkstar>
Date: Sat, 6 Feb 2010 21:40:56 +0800
From: Dave Young <hidave.darkstar@...il.com>
To: linux-kernel@...r.kernel.org,
Andrew Morton <akpm@...ux-foundation.org>,
Ingo Molnar <mingo@...e.hu>
Subject: [PATCH 2/2] allow printk delay after multi lines
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@...il.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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists