tools: bpftool: improve accuracy of load time
authorJakub Kicinski <jakub.kicinski@netronome.com>
Thu, 14 Jun 2018 18:06:55 +0000 (11:06 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 15 Jun 2018 01:13:17 +0000 (03:13 +0200)
BPF program load time is reported from the kernel relative to boot time.
If conversion to wall clock does not take nanosecond parts into account,
the load time reported by bpftool may differ by one second from run to
run.  This means JSON object reported by bpftool for a program will
randomly change.

Fixes: 71bb428fe2c1 ("tools: bpf: add bpftool")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
tools/bpf/bpftool/prog.c

index a4f435203feff52f9d7c9a04bf8d5c10c31d2c73..05f42a46d6ed35482c96ab9aed74915dd36fc284 100644 (file)
@@ -90,7 +90,9 @@ static void print_boot_time(__u64 nsecs, char *buf, unsigned int size)
        }
 
        wallclock_secs = (real_time_ts.tv_sec - boot_time_ts.tv_sec) +
-               nsecs / 1000000000;
+               (real_time_ts.tv_nsec - boot_time_ts.tv_nsec + nsecs) /
+               1000000000;
+
 
        if (!localtime_r(&wallclock_secs, &load_tm)) {
                snprintf(buf, size, "%llu", nsecs / 1000000000);