Messages in this thread Patch in this message | | | From | Neil Zhang <> | Subject | [PATCH] printk: add sleep time into timestamp | Date | Thu, 27 Mar 2014 16:17:21 +0800 |
| |
Add sleep time into timestamp to reflect the actual time since sched_clock will be stopped during suspend.
This patch depends on the following patch. timekeeping: check params before use them
Signed-off-by: Neil Zhang <zhangwm@marvell.com> --- kernel/printk/printk.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 4dae9cb..2dc6145 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -250,6 +250,17 @@ static char __log_buf[__LOG_BUF_LEN] __aligned(LOG_ALIGN); static char *log_buf = __log_buf; static u32 log_buf_len = __LOG_BUF_LEN; +static u64 print_clock(void) +{ + struct timespec ts; + u64 ts_nsec = local_clock(); + + get_xtime_and_monotonic_and_sleep_offset(NULL, NULL, &ts); + ts_nsec += (u64)ts.tv_sec * NSEC_PER_SEC + (u64)ts.tv_nsec; + + return ts_nsec; +} + /* cpu currently holding logbuf_lock */ static volatile unsigned int logbuf_cpu = UINT_MAX; @@ -349,7 +360,7 @@ static void log_store(int facility, int level, if (ts_nsec > 0) msg->ts_nsec = ts_nsec; else - msg->ts_nsec = local_clock(); + msg->ts_nsec = print_clock(); memset(log_dict(msg) + dict_len, 0, pad_len); msg->len = sizeof(struct printk_log) + text_len + dict_len + pad_len; @@ -1440,7 +1451,7 @@ static bool cont_add(int facility, int level, const char *text, size_t len) cont.facility = facility; cont.level = level; cont.owner = current; - cont.ts_nsec = local_clock(); + cont.ts_nsec = print_clock(); cont.flags = 0; cont.cons = 0; cont.flushed = false; -- 1.7.9.5
| |