Filter for selecting trace and tracefile
[lttv.git] / ltt / branches / poly / include / ltt / ltt-private.h
index 7dea83d98f6d21ff8d2a6cb186f9ccb5d1f8716c..faf2baffe29a3d3e51a8be65ab755ca030029e18 100644 (file)
@@ -2,18 +2,20 @@
 #define LTT_PRIVATE_H
 
 #include <glib.h>
+#include <sys/types.h>
 #include <ltt/ltt.h>
-#include <ltt/LTTTypes.h>
 #include <ltt/type.h>
 #include <ltt/trace.h>
 
+#define LTT_PACKED_STRUCT __attribute__ ((packed))
+
 /* enumeration definition */
 
 typedef enum _BuildinEvent{
   TRACE_FACILITY_LOAD = 0,
   TRACE_BLOCK_START   = 17,
   TRACE_BLOCK_END     = 18,
-  TRACE_TIME_HEARTBEAT= 22
+  TRACE_TIME_HEARTBEAT= 19
 } BuildinEvent;
 
 
@@ -22,19 +24,19 @@ typedef enum _BuildinEvent{
 typedef struct _FacilityLoad{
   char * name;
   LttChecksum checksum;
-  uint32_t base_code;
+  guint32     base_code;
 } LTT_PACKED_STRUCT FacilityLoad;
 
 typedef struct _BlockStart {
   LttTime       time;       //Time stamp of this block
   LttCycleCount cycle_count; //cycle count of the event
-  uint32_t      block_id;    //block id 
+  guint32       block_id;    //block id 
 } LTT_PACKED_STRUCT BlockStart;
 
 typedef struct _BlockEnd {
   LttTime       time;       //Time stamp of this block
   LttCycleCount cycle_count; //cycle count of the event
-  uint32_t      block_id;    //block id 
+  guint32       block_id;    //block id 
 } LTT_PACKED_STRUCT BlockEnd;
 
 typedef struct _TimeHeartbeat {
@@ -44,7 +46,8 @@ typedef struct _TimeHeartbeat {
 
 
 struct _LttType{
-  char * element_name;             //elements name of the struct or type name
+  char * type_name;                //type name if it is a named type
+  char * element_name;             //elements name of the struct
   char * fmt;
   int size;
   LttTypeEnum type_class;          //which type
@@ -80,6 +83,9 @@ struct _LttField{
   int  field_size;           //>0: size of the field, 
                              //0 : uncertain
                              //-1: uninitialize
+  int sequ_number_size;      //the size of unsigned used to save the
+                             //number of elements in the sequence
+
   int element_size;          //the element size of the sequence
   int field_fixed;           //0: field has string or sequence
                              //1: field has no string or sequenc
@@ -93,19 +99,21 @@ struct _LttField{
 };
 
 struct _LttEvent{
-  uint16_t event_id;
-  uint32_t time_delta;
+  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
 };
 
 struct _LttFacility{
   char * name;               //facility name 
   int event_number;          //number of events in the facility 
   LttChecksum checksum;      //checksum of the facility 
-  uint32_t base_id;          //base id of the facility
+  guint32  base_id;          //base id of the facility
   LttEventType ** events;    //array of event types 
   LttType ** named_types;
   int  named_types_number;
@@ -128,9 +136,12 @@ struct _LttTracefile{
   void * buffer;                     //the buffer containing the block
   double cycle_per_nsec;             //Cycles per nsec
   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;
 };
 
 struct _LttTrace{
@@ -139,6 +150,7 @@ struct _LttTrace{
   guint control_tracefile_number;           //the number of control files 
   guint per_cpu_tracefile_number;           //the number of per cpu files 
   LttSystemDescription * system_description;//system description 
+
   GPtrArray *control_tracefiles;            //array of control tracefiles 
   GPtrArray *per_cpu_tracefiles;            //array of per cpu tracefiles 
   GPtrArray *facilities;                    //array of facilities 
@@ -146,12 +158,23 @@ struct _LttTrace{
   LttArchEndian my_arch_endian;             //endian type of the local machine
 };
 
+struct _LttEventPosition{
+  unsigned      block_num;          //block which contains the event 
+  unsigned      event_num;          //event index in the block
+  unsigned      event_offset;       //event position in the block
+  LttTime       event_time;         //the time of the event
+  LttCycleCount event_cycle_count;  //the cycle count of the event
+  unsigned      heart_beat_number;  //current number of heart beats  
+  LttTracefile *tf;                 //tracefile containing the event
+  gboolean      old_position;       //flag to show if it is the position
+                                    //being remembered
+};
 
 /*****************************************************************************
  macro for size of some data types
  *****************************************************************************/
-#define EVENT_ID_SIZE     sizeof(uint16_t)
-#define TIME_DELTA_SIZE   sizeof(uint32_t)
+#define EVENT_ID_SIZE     sizeof(guint16)
+#define TIME_DELTA_SIZE   sizeof(guint32)
 #define EVENT_HEADER_SIZE (EVENT_ID_SIZE + TIME_DELTA_SIZE)
 
 
@@ -163,6 +186,9 @@ LttTime getEventTime(LttTracefile * tf);
 /* get the data type size and endian type of the local machine */
 void getDataEndianType(LttArchSize * size, LttArchEndian * endian);
 
+/* get an integer number */
+int getIntNumber(int size1, void *evD);
+
 /* open facility */
 void ltt_facility_open(LttTrace * t, char * facility_name);
 
This page took 0.027215 seconds and 4 git commands to generate.