trace: implement memory allocation
[dpdk.git] / lib / librte_eal / common / eal_common_trace_utils.c
index 7fc7022..503d0ab 100644 (file)
 #include "eal_filesystem.h"
 #include "eal_trace.h"
 
+const char *
+trace_mode_to_string(enum rte_trace_mode mode)
+{
+       switch (mode) {
+       case RTE_TRACE_MODE_OVERWRITE: return "overwrite";
+       case RTE_TRACE_MODE_DISCARD: return "discard";
+       default: return "unknown";
+       }
+}
+
+const char *
+trace_area_to_string(enum trace_area_e area)
+{
+       switch (area) {
+       case TRACE_AREA_HEAP: return "heap";
+       case TRACE_AREA_HUGEPAGE: return "hugepage";
+       default: return "unknown";
+       }
+}
+
 static bool
 trace_entry_compare(const char *name)
 {
@@ -98,6 +118,28 @@ fail:
        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)
 {