events cycle count fix, reverse byte order fix
[lttv.git] / ltt / branches / poly / ltt / ltt-private.h
index f0c0d9572e72748a70bb70401f875c38ea8569d8..d10e35f91164f58c753253c9dbc602b0ddb22f6c 100644 (file)
@@ -65,7 +65,7 @@ struct _LttType{
   char * type_name;                //type name if it is a named type
   char * element_name;             //elements name of the struct
   char * fmt;
-  int size;
+  unsigned int size;
   LttTypeEnum type_class;          //which type
   char ** enum_strings;            //for enum labels
   struct _LttType ** element_type; //for array, sequence and struct
@@ -79,10 +79,33 @@ struct _LttEventType{
   int index;              //id of the event type within the facility
   LttFacility * facility; //the facility that contains the event type
   LttField * root_field;  //root field
-  int latest_block;       //the latest block using the event type
-  int latest_event;       //the latest event using the event type
+  unsigned int latest_block;       //the latest block using the event type
+  unsigned int latest_event;       //the latest event using the event type
 };
 
+struct _LttEvent{
+  guint16  event_id;
+  guint32  time_delta;
+  LttTime event_time;
+  LttCycleCount event_cycle_count;
+  LttTracefile * tracefile;
+  void * data;               //event data
+  unsigned int which_block;           //the current block of the event
+  unsigned int which_event;           //the position of the event
+  /* This is a workaround for fast position seek */
+  void * last_event_pos;
+
+  LttTime prev_block_end_time;       //the end time of previous block
+  LttTime prev_event_time;           //the time of the previous event
+  LttCycleCount pre_cycle_count;     //previous cycle count of the event
+  int      count;                    //the number of overflow of cycle count
+  gint64 overflow_nsec;              //precalculated nsec for overflows
+  TimeHeartbeat * last_heartbeat;    //last heartbeat
+
+  /* end of workaround */
+};
+
+
 struct _LttField{
   unsigned field_pos;        //field position within its parent
   LttType * field_type;      //field type, if it is root field
@@ -114,33 +137,15 @@ struct _LttField{
   unsigned current_element;  //which element is currently processed
 };
 
-struct _LttEvent{
-  guint16  event_id;
-  guint32  time_delta;
-  LttTime event_time;
-  LttCycleCount event_cycle_count;
-  LttTracefile * tracefile;
-  void * data;               //event data
-  int which_block;           //the current block of the event
-  int which_event;           //the position of the event
-  /* This is a workaround for fast position seek */
-  void * last_event_pos;
-
-  LttTime prev_block_end_time;       //the end time of previous block
-  LttTime prev_event_time;           //the time of the previous event
-  LttCycleCount pre_cycle_count;     //previous cycle count of the event
-  int      count;                    //the number of overflow of cycle count
-  /* end of workaround */
-};
 
 struct _LttFacility{
   char * name;               //facility name 
-  int event_number;          //number of events in the facility 
+  unsigned int event_number;          //number of events in the facility 
   LttChecksum checksum;      //checksum of the facility 
   guint32  base_id;          //base id of the facility
   LttEventType ** events;    //array of event types 
   LttType ** named_types;
-  int  named_types_number;
+  unsigned int named_types_number;
 };
 
 struct _LttTracefile{
@@ -149,25 +154,32 @@ struct _LttTracefile{
   int fd;                            //file descriptor 
   off_t file_size;                   //file size
   unsigned block_size;               //block_size
-  int block_number;                  //number of blocks in the file
-  int which_block;                   //which block the current block is
-  int which_event;                   //which event of the current block 
+  unsigned int block_number;         //number of blocks in the file
+  unsigned int which_block;          //which block the current block is
+  unsigned int which_event;          //which event of the current block 
                                      //is currently processed 
   LttTime current_event_time;        //time of the current event
-  BlockStart * a_block_start;        //block start of the block
-  BlockEnd   * a_block_end;          //block end of the block
+  BlockStart * a_block_start;        //block start of the block- trace endian
+  BlockEnd   * a_block_end;          //block end of the block - trace endian
+  TimeHeartbeat * last_heartbeat;    //last heartbeat
   void * cur_event_pos;              //the position of the current event
   void * buffer;                     //the buffer containing the block
-  double cycle_per_nsec;             //Cycles per nsec
+  double nsec_per_cycle;             //Nsec per cycle
+  guint64 one_overflow_nsec;         //nsec for one overflow
+  gint64 overflow_nsec;              //precalculated nsec for overflows
+                                     //can be negative to include value
+                                     //of block start cycle count.
+                                     //incremented at each overflow while
+                                     //reading.
+  //LttCycleCount cycles_per_nsec_reciprocal; // Optimisation for speed
   unsigned cur_heart_beat_number;    //current number of heart beat in the buf
   LttCycleCount cur_cycle_count;     //current cycle count of the event
   void * last_event_pos;
 
   LttTime prev_block_end_time;       //the end time of previous block
   LttTime prev_event_time;           //the time of the previous event
-  LttEvent an_event;
   LttCycleCount pre_cycle_count;     //previous cycle count of the event
-  int      count;                    //the number of overflow of cycle count
+  unsigned int      count;           //the number of overflow of cycle count
 };
 
 struct _LttTrace{
@@ -180,8 +192,7 @@ struct _LttTrace{
   GPtrArray *control_tracefiles;            //array of control tracefiles 
   GPtrArray *per_cpu_tracefiles;            //array of per cpu tracefiles 
   GPtrArray *facilities;                    //array of facilities 
-  LttArchSize my_arch_size;                 //data size of the local machine
-  LttArchEndian my_arch_endian;             //endian type of the local machine
+  gboolean reverse_byte_order;              //must we reverse BO ?
 };
 
 struct _LttEventPosition{
@@ -199,9 +210,10 @@ struct _LttEventPosition{
 
   LttTime prev_block_end_time;       //the end time of previous block
   LttTime prev_event_time;           //the time of the previous event
-  LttEvent an_event;
   LttCycleCount pre_cycle_count;     //previous cycle count of the event
   int      count;                    //the number of overflow of cycle count
+  gint64 overflow_nsec;              //precalculated nsec for overflows
+  TimeHeartbeat * last_heartbeat;    //last heartbeat
   /* end of workaround */
 };
 
This page took 0.025066 seconds and 4 git commands to generate.