trace: save bootup timestamp
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 <jerinj@marvell.com> Acked-by: David Marchand <david.marchand@redhat.com>
This commit is contained in:
parent
321dd5f8fa
commit
185b7dc1d4
@ -61,6 +61,9 @@ eal_trace_init(void)
|
||||
if (trace_mkdir())
|
||||
goto fail;
|
||||
|
||||
/* Save current epoch timestamp for future use */
|
||||
if (trace_epoch_time_save() < 0)
|
||||
goto fail;
|
||||
|
||||
rte_trace_mode_set(trace.mode);
|
||||
|
||||
|
@ -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 };
|
||||
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;
|
||||
trace->uptime_ticks = avg;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
trace_dir_default_path_get(char *dir_path)
|
||||
{
|
||||
|
@ -5,6 +5,7 @@
|
||||
#ifndef __EAL_TRACE_H
|
||||
#define __EAL_TRACE_H
|
||||
|
||||
#include <rte_cycles.h>
|
||||
#include <rte_spinlock.h>
|
||||
#include <rte_trace.h>
|
||||
#include <rte_trace_point.h>
|
||||
@ -37,6 +38,9 @@ struct trace {
|
||||
rte_uuid_t uuid;
|
||||
uint32_t buff_len;
|
||||
uint32_t nb_trace_points;
|
||||
uint64_t epoch_sec;
|
||||
uint64_t epoch_nsec;
|
||||
uint64_t uptime_ticks;
|
||||
rte_spinlock_t lock;
|
||||
};
|
||||
|
||||
@ -59,6 +63,7 @@ struct trace_point_head *trace_list_head_get(void);
|
||||
bool trace_has_duplicate_entry(void);
|
||||
void trace_uuid_generate(void);
|
||||
int trace_mkdir(void);
|
||||
int trace_epoch_time_save(void);
|
||||
|
||||
/* EAL interface */
|
||||
int eal_trace_init(void);
|
||||
|
Loading…
Reference in New Issue
Block a user