On Thu, Mar 19, 2020 at 4:13 PM Mattias Rönnblom
<mattias.ronnb...@ericsson.com> wrote:
>
> On 2020-03-18 20:02, jer...@marvell.com wrote:
> > From: Jerin Jacob <jer...@marvell.com>
> >
> > Find epoch_sec, epoch_nsec and uptime_ticks time information
> > on eal_trace_init()/bootup to derive the time in the trace.
> >
> > Signed-off-by: Jerin Jacob <jer...@marvell.com>
> > ---
> >   lib/librte_eal/common/eal_common_trace.c      |  3 +++
> >   .../common/eal_common_trace_utils.c           | 22 +++++++++++++++++++
> >   lib/librte_eal/common/eal_trace.h             |  5 +++++
> >   3 files changed, 30 insertions(+)
> >
> > diff --git a/lib/librte_eal/common/eal_common_trace.c 
> > b/lib/librte_eal/common/eal_common_trace.c
> > index abb221cf3..51c4dd550 100644
> > --- a/lib/librte_eal/common/eal_common_trace.c
> > +++ b/lib/librte_eal/common/eal_common_trace.c
> > @@ -59,6 +59,9 @@ eal_trace_init(void)
> >       if (trace_mkdir())
> >               goto fail;
> >
> > +     /* Save current epoch timestamp for future use */
> > +     if (trace_epoch_time_save())
> > +             goto fail;
> < 0 looks cleaner.

OK. I will change it in v2.

> >
> >       rte_trace_global_mode_set(trace.mode);
> >
> > diff --git a/lib/librte_eal/common/eal_common_trace_utils.c 
> > b/lib/librte_eal/common/eal_common_trace_utils.c
> > index f7d59774c..340ab62e4 100644
> > --- a/lib/librte_eal/common/eal_common_trace_utils.c
> > +++ b/lib/librte_eal/common/eal_common_trace_utils.c
> > @@ -98,6 +98,28 @@ trace_session_name_generate(char *trace_dir)
> >       return -rte_errno;
> >   }
> >
> > +int
> > +trace_epoch_time_save(void)
> > +{
> > +     struct trace *trace = trace_obj_get();
> > +     struct timespec epoch = { 0, 0 };
> = {} also works.
> > +     uint64_t avg, start, end;
> > +
> > +     start = rte_get_tsc_cycles();
> > +     if (clock_gettime(CLOCK_REALTIME, &epoch) < 0) {
> > +             trace_err("failed to get the epoch time");
> > +             return -1;
> > +     }
> > +     end = rte_get_tsc_cycles();
> > +     avg = (start + end) >> 1;
> > +
> > +     trace->epoch_sec = (uint64_t) epoch.tv_sec;
> > +     trace->epoch_nsec = (uint64_t) epoch.tv_nsec;
> If you would settle with keeping the time offset in microseconds, you
> would only need "epoch_offset_usec".

ctf spec[1] uses offset_s and offset in clock definition. Storing both
to avoid conversion in the future.

[1]
https://diamon.org/ctf/#spec8

Reply via email to