X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Finclude%2Fltt%2Fltt-private.h;h=faf2baffe29a3d3e51a8be65ab755ca030029e18;hb=daecc161cdd7a5931dc553307e3509010076ac35;hp=7dea83d98f6d21ff8d2a6cb186f9ccb5d1f8716c;hpb=36921b4e76e1c09a21049190dde5ff1b33874d3e;p=lttv.git diff --git a/ltt/branches/poly/include/ltt/ltt-private.h b/ltt/branches/poly/include/ltt/ltt-private.h index 7dea83d9..faf2baff 100644 --- a/ltt/branches/poly/include/ltt/ltt-private.h +++ b/ltt/branches/poly/include/ltt/ltt-private.h @@ -2,18 +2,20 @@ #define LTT_PRIVATE_H #include +#include #include -#include #include #include +#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);