fix multiversion traces handling
[lttv.git] / ltt / branches / poly / ltt / ltt-private.h
index 9ef7d4818eda87253789217a876d942f30fe783a..bf659e02e19f30c7aea236851f98ceb11f6e0ce8 100644 (file)
@@ -22,6 +22,7 @@
 #include <glib.h>
 #include <sys/types.h>
 #include <ltt/ltt.h>
+#include <endian.h>
 
 
 #ifndef max
 
 /* Hardcoded facilities */
 #define LTT_FACILITY_CORE 0
+/* Byte ordering */
+#define LTT_GET_BO(t) ((t)->reverse_bo)
+
+#define LTT_HAS_FLOAT(t) ((t)->float_word_order!=0)
+#define LTT_GET_FLOAT_BO(t) \
+  (((t)->float_word_order==__BYTE_ORDER)?0:1)
 
 /* Hardcoded core events */
 enum ltt_core_events {
@@ -128,21 +136,42 @@ 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;
+
+
+
 struct ltt_block_start_header {
   struct { 
     struct timeval          timestamp;
@@ -154,7 +183,7 @@ struct ltt_block_start_header {
   } 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;
 
 
@@ -308,14 +337,18 @@ typedef struct _LttBuffer {
 
 struct _LttTracefile{
   gboolean cpu_online;               //is the cpu online ?
+  GQuark long_name;                  //tracefile complete filename
   GQuark name;                       //tracefile name
   guint cpu_num;                     //cpu number of the tracefile
   LttTrace * trace;                  //trace containing the tracefile
   int fd;                            //file descriptor 
   off_t file_size;                   //file size
-  unsigned block_size;               //block_size
+  //unsigned block_size;               //block_size
   unsigned int num_blocks;           //number of blocks in the file
   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
@@ -344,7 +377,8 @@ struct _LttTrace{
   GArray *facilities_by_num;            /* fac_id as index in array */
   GData *facilities_by_name;            /* fac name (GQuark) as index */
                                         /* Points to array of fac_id of all the
-                                         * facilities that has this name. */
+                                        * facilities that has this name. */
+  guint     num_cpu;
 
   guint32   arch_type;
   guint32   arch_variant;
@@ -389,7 +423,5 @@ struct _LttSystemDescription {
 //#define EVENT_ID_SIZE     sizeof(guint16)
 //#define EVENT_HEADER_SIZE (TIMESTAMP_SIZE + EVENT_ID_SIZE)
 
-#define LTT_GET_BO(t) ((t)->reverse_bo)
-
 
 #endif /* LTT_PRIVATE_H */
This page took 0.024499 seconds and 4 git commands to generate.