Skip to content

Commit

Permalink
[PATCH] Add printk_clock()
Browse files Browse the repository at this point in the history
ia64's sched_clock() accesses per-cpu data which isn't set up at boot time.
Hence ia64 cannot use printk timestamping, because printk() will crash in
sched_clock().

So make printk() use printk_clock(), defaulting to sched_clock(), overrideable
by the architecture via attribute(weak).

Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Andrew Morton authored and Linus Torvalds committed Sep 21, 2005
1 parent 66dcca0 commit 31f6d9d
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion kernel/printk.c
Original file line number Diff line number Diff line change
Expand Up @@ -488,6 +488,11 @@ static int __init printk_time_setup(char *str)

__setup("time", printk_time_setup);

__attribute__((weak)) unsigned long long printk_clock(void)
{
return sched_clock();
}

/*
* This is printk. It can be called from any context. We want it to work.
*
Expand Down Expand Up @@ -565,7 +570,7 @@ asmlinkage int vprintk(const char *fmt, va_list args)
loglev_char = default_message_loglevel
+ '0';
}
t = sched_clock();
t = printk_clock();
nanosec_rem = do_div(t, 1000000000);
tlen = sprintf(tbuf,
"<%c>[%5lu.%06lu] ",
Expand Down

0 comments on commit 31f6d9d

Please sign in to comment.