change trace version to 0.4 : use monotonic time at ns precision
[lttv.git] / ltt / branches / poly / ltt / ltt-private.h
index bcd745ca5d917a1f8e29eaf8b953b467c1ec09b6..1bbe0a10ddcf9e56f0367e4785a77c0aceb19b13 100644 (file)
@@ -47,7 +47,6 @@
 #define LTT_GET_FLOAT_BO(t) \
   (((t)->float_word_order==__BYTE_ORDER)?0:1)
 
-
 /* Hardcoded core events */
 enum ltt_core_events {
     LTT_EVENT_FACILITY_LOAD,
@@ -137,34 +136,73 @@ struct ltt_event_header_nohb {
   uint16_t      event_size;
 } LTT_PACKED_STRUCT;
 
-struct ltt_trace_header {
+
+/* Block and trace headers */
+
+struct ltt_trace_header_any {
   uint32_t        magic_number;
   uint32_t        arch_type;
   uint32_t        arch_variant;
   uint32_t        float_word_order;
   uint8_t         arch_size;
-  //uint32_t        system_type;
-  uint8_t          major_version;
-  uint8_t          minor_version;
-  uint8_t          flight_recorder;
-  uint8_t          has_heartbeat;
-  uint8_t          has_alignment;  /* Event header alignment */
-       uint8_t                                  has_tsc;
+  uint8_t         major_version;
+  uint8_t         minor_version;
+  uint8_t         flight_recorder;
+  uint8_t         has_heartbeat;
+  uint8_t         has_alignment;  /* Event header alignment */
+       uint8_t                     has_tsc;
+} LTT_PACKED_STRUCT;
+
+
+/* For version 0.3 */
+
+struct ltt_trace_header_0_3 {
+  uint32_t        magic_number;
+  uint32_t        arch_type;
+  uint32_t        arch_variant;
+  uint32_t        float_word_order;
+  uint8_t         arch_size;
+  uint8_t         major_version;
+  uint8_t         minor_version;
+  uint8_t         flight_recorder;
+  uint8_t         has_heartbeat;
+  uint8_t         has_alignment;  /* Event header alignment */
+       uint8_t                          has_tsc;
+} LTT_PACKED_STRUCT;
+
+/* For version 0.4 */
+
+struct ltt_trace_header_0_4 {
+  uint32_t        magic_number;
+  uint32_t        arch_type;
+  uint32_t        arch_variant;
+  uint32_t        float_word_order;
+  uint8_t         arch_size;
+  uint8_t         major_version;
+  uint8_t         minor_version;
+  uint8_t         flight_recorder;
+  uint8_t         has_heartbeat;
+  uint8_t         has_alignment;  /* Event header alignment */
+       uint8_t         has_tsc;
+  uint64_t        start_monotonic;
+  struct timespec start_time;
 } LTT_PACKED_STRUCT;
 
 
 struct ltt_block_start_header {
   struct { 
-    struct timeval          timestamp;
+    uint64_t                timestamp;
     uint64_t                cycle_count;
+    uint64_t                freq;
   } begin;
   struct {
-    struct timeval          timestamp;
+    uint64_t                timestamp;
     uint64_t                cycle_count;
+    uint64_t                freq;
   } end;
   uint32_t                lost_size;  /* Size unused at the end of the buffer */
   uint32_t                buf_size;   /* The size of this sub-buffer */
-  struct ltt_trace_header trace;
+  struct ltt_trace_header_any trace[0];
 } LTT_PACKED_STRUCT;
 
 
@@ -304,16 +342,19 @@ typedef struct _LttBuffer {
   struct {
     LttTime                 timestamp;
     uint64_t                cycle_count;
+    uint64_t                freq; /* Frequency in khz */
   } begin;
   struct {
     LttTime                 timestamp;
     uint64_t                cycle_count;
+    uint64_t                freq; /* Frequency in khz */
   } end;
   uint32_t                lost_size; /* Size unused at the end of the buffer */
 
   /* Timekeeping */
   uint64_t                tsc;       /* Current timestamp counter */
-  double                  nsecs_per_cycle;
+  uint64_t                freq; /* Frequency in khz */
+  double                  nsecs_per_cycle;  /* Precalculated from freq */
 } LttBuffer;
 
 struct _LttTracefile{
@@ -329,6 +370,8 @@ struct _LttTracefile{
   gboolean  reverse_bo;              //must we reverse byte order ?
   gboolean  float_word_order;        //what is the byte order of floats ?
 
+  size_t    buffer_header_size;
+
        /* Current event */
   LttEvent event;                    //Event currently accessible in the trace
 
@@ -368,6 +411,8 @@ struct _LttTrace{
   guint8    has_heartbeat;
   guint8    has_alignment;
        guint8          has_tsc;
+  uint64_t  start_monotonic;
+  LttTime   start_time;
 
   GData     *tracefiles;                    //tracefiles groups
 };
This page took 0.024426 seconds and 4 git commands to generate.