Messages in this thread Patch in this message | | | From | Yinghai Lu <> | Subject | [PATCH] printk_time: prepare stub for using other than cpu_clock | Date | Wed, 27 Aug 2008 00:38:55 -0700 |
| |
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
--- include/linux/kernel.h | 5 +++++ init/main.c | 1 + kernel/printk.c | 14 +++++++++++++- 3 files changed, 19 insertions(+), 1 deletion(-)
Index: linux-2.6/include/linux/kernel.h =================================================================== --- linux-2.6.orig/include/linux/kernel.h +++ linux-2.6/include/linux/kernel.h @@ -190,7 +190,10 @@ extern int kernel_text_address(unsigned struct pid; extern struct pid *session_of_pgrp(struct pid *pgrp); +typedef unsigned long long (*printk_time_clock_fn)(int cpu); #ifdef CONFIG_PRINTK +extern void set_printk_time_clock(printk_time_clock_fn fn); + asmlinkage int vprintk(const char *fmt, va_list args) __attribute__ ((format (printf, 1, 0))); asmlinkage int printk(const char * fmt, ...) @@ -201,6 +204,8 @@ extern int printk_ratelimit(void); extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, unsigned int interval_msec); #else +static inline void set_printk_time_clock(printk_time_clock_fn fn) { } + static inline int vprintk(const char *s, va_list args) __attribute__ ((format (printf, 1, 0))); static inline int vprintk(const char *s, va_list args) { return 0; } Index: linux-2.6/init/main.c =================================================================== --- linux-2.6.orig/init/main.c +++ linux-2.6/init/main.c @@ -671,6 +671,7 @@ asmlinkage void __init start_kernel(void if (late_time_init) late_time_init(); calibrate_delay(); + set_printk_time_clock(cpu_clock); pidmap_init(); pgtable_cache_init(); prio_tree_init(); Index: linux-2.6/kernel/printk.c =================================================================== --- linux-2.6.orig/kernel/printk.c +++ linux-2.6/kernel/printk.c @@ -659,6 +659,18 @@ static int recursion_bug; static int new_text_line = 1; static char printk_buf[1024]; +static unsigned long long default_printk_time_clock(int cpu) +{ + return 0; +} + +static printk_time_clock_fn printk_time_clock = default_printk_time_clock; + +void set_printk_time_clock(printk_time_clock_fn fn) +{ + printk_time_clock = fn; +} + asmlinkage int vprintk(const char *fmt, va_list args) { int printed_len = 0; @@ -734,7 +746,7 @@ asmlinkage int vprintk(const char *fmt, unsigned long long t; unsigned long nanosec_rem; - t = cpu_clock(printk_cpu); + t = printk_time_clock(printk_cpu); nanosec_rem = do_div(t, 1000000000); tlen = sprintf(tbuf, "[%5lu.%06lu] ", (unsigned long) t,
| |