summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChaos.Chen <rainboy1215@gmail.com>2016-02-09 20:40:14 (GMT)
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-03-03 14:10:37 (GMT)
commit21a30100453516004905d4d5f0806ebaffa95131 (patch)
tree81200b0f539f94c8f71efe192cb6e41176d20743
parent979ac257b00c53aacec3eacf86142e8c00bee889 (diff)
downloadlinux-21a30100453516004905d4d5f0806ebaffa95131.tar.xz
tools lib traceevent: Fix time stamp rounding issue
When rounding to microseconds, if the timestamp subsecond is between .999999500 and .999999999, it is rounded to .1000000, when it should instead increment the second counter due to the overflow. For example, if the timestamp is 1234.999999501 instead of seeing: 1235.000000 we see: 1234.1000000 Signed-off-by: Chaos.Chen <rainboy1215@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Link: http://lkml.kernel.org/r/20160209204236.824426460@goodmis.org [ fixed incrementing "secs" instead of decrementing it ] Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/lib/traceevent/event-parse.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
index 9a1e48a..ce59f48 100644
--- a/tools/lib/traceevent/event-parse.c
+++ b/tools/lib/traceevent/event-parse.c
@@ -5429,6 +5429,11 @@ void pevent_print_event_time(struct pevent *pevent, struct trace_seq *s,
p = 9;
} else {
usecs = (nsecs + 500) / NSECS_PER_USEC;
+ /* To avoid usecs larger than 1 sec */
+ if (usecs >= 1000000) {
+ usecs -= 1000000;
+ secs++;
+ }
p = 6;
}