Copies from older experiments which should not have been checked in.
[lttv.git] / ltt / branches / poly / include / ltt / ltt-private.h
CommitLineData
858bd80a 1#include <glib.h>
7c6b3cd7 2#include "ltt/ltt.h"
3
4/* structure definition */
5
6typedef struct _trace_header_event {
7 //information of the machine type
8 uint32_t arch_type; /* Type of architecture */
9 uint32_t arch_variant; /* Variant of the given type of architecture */
10 uint32_t system_type; /* Operating system type */
11 char system_name[32]; /* system name */
12 // uint32_t magic_number; /* Magic number to identify a trace */
13 ltt_arch_size arch_size; /* data type size */
14 ltt_arch_endian arch_endian; /* endian type : little or big */
15
16 //format of fields
17 uint8_t time_size; /* time size */
18 uint8_t time_granul; /* time granularity */
19 uint8_t id_size; /* size of combined facility/event ids */
20
21 //other elements
22 uint32_t ip_addr; /* IP of the machine */
23 uint8_t cpu_number; /* number of CPU */
24 uint8_t cpu_id; /* cpu id */
25 uint8_t cpu_number_used; /* the number of the cpu used in the tracefile */
26 uint32_t buffer_size; /* Size of blocks */
27} LTT_PACKED_STRUCT trace_header_event;
28
29
30typedef struct _block_header {
31 ltt_time time; /* Time stamp of this block */
32 ltt_cycle_count cycle_count; /* cycle count of the event */
33 uint32_t event_count; /* event count */
34} LTT_PACKED_STRUCT block_header;
35
36
37typedef struct _block_footer {
38 uint32_t unused_bytes; /* unused bytes at the end of the block */
39 ltt_time time; /* Time stamp of this block */
40 ltt_cycle_count cycle_count; /* cycle count of the event */
41} LTT_PACKED_STRUCT block_footer;
42
43
44struct _ltt_type{
45 char * element_name; //elements name of the struct or type name
46 char * fmt;
47 int size;
48 ltt_type_enum type_class; //which type
49 char ** enum_strings; //for enum labels
50 struct _ltt_type ** element_type; //for array, sequence and struct
51 unsigned element_number; //the number of elements
52 //for enum, array, sequence and structure
53};
54
55struct _ltt_eventtype{
56 char * name;
57 char * description;
58 int index; //id of the event type within the facility
59 ltt_facility * facility; //the facility that contains the event type
60 ltt_field * root_field; //root field
61 int latest_block; //the latest block using the event type
62 int latest_event; //the latest event using the event type
63};
64
65struct _ltt_field{
66 unsigned field_pos; //field position within its parent
67 ltt_type * field_type; //field type, if it is root field
68 //then it must be struct type
69
70 off_t offset_root; //offset from the root, -1:uninitialized
71 short fixed_root; //offset fixed according to the root
72 //-1:uninitialized, 0:unfixed, 1:fixed
73 off_t offset_parent; //offset from the parent,-1:uninitialized
74 short fixed_parent; //offset fixed according to its parent
75 //-1:uninitialized, 0:unfixed, 1:fixed
76 // void * base_address; //base address of the field ????
77
78 int field_size; //>0: size of the field,
79 //0 : uncertain
80 //-1: uninitialize
81 int element_size; //the element size of the sequence
82 int field_fixed; //0: field has string or sequence
83 //1: field has no string or sequenc
84 //-1: uninitialize
85
86 struct _ltt_field * parent;
87 struct _ltt_field ** child;//for array, sequence and struct:
88 //list of fields, it may have only one
89 //field if the element is not a struct
90 unsigned current_element; //which element is currently processed
91};
92
93struct _ltt_event{
94 int event_id;
95 ltt_cycle_count cycle_count;
96 ltt_tracefile * tracefile;
97 void * data; //event data
98};
99
100struct _ltt_facility{
101 char * name; //facility name
102 int event_number; //number of events in the facility
103 ltt_checksum checksum; //checksum of the facility
104 ltt_eventtype ** events; //array of event types
105 unsigned usage_count; //usage count
106 table all_named_types; //an array of named ltt_type
107 sequence all_unnamed_types;//an array of unnamed ltt_type
108 sequence all_fields; //an array of fields
109};
110
111struct _ltt_tracefile{
112 int fd; /* file descriptor */
113 off_t file_size; /* file size */
114 int block_number; /* number of blocks in the file */
115 int which_block; /* which block the current block is */
116 int which_event; /* which event of the current block
117 is currently processed */
118 ltt_time current_event_time; /* time of the current event */
119 trace_header_event * trace_header; /* the first event in the first block */
120 block_header * a_block_header; /* block header of the block*/
121 block_footer * a_block_footer; /* block footer of the block*/
122 void * first_event_pos; /* the position of the first event */
123 void * cur_event_pos; /* the position of the current event */
124 void * buffer; /* the buffer containing the block */
125 double cycle_per_nsec; /* Cycles per nsec */
126 unsigned int cur_heart_beat_number;/* the number of heart beat so far
127 in the block */
128
129 ltt_time start_time; /* trace start time */
130 ltt_time end_time; /* trace end time */
131 ltt_time prev_block_end_time; /* the end time of previous block */
132 ltt_time prev_event_time; /* the time of the previous event */
133
134 int eventtype_number; /* the number of event type
135 in the tracefile */
136 int facility_number; /* the number of the facility in
137 the tracefile */
138 GHashTable * index_facility; /* facility index and facility pair */
139 GHashTable * facility_name; /* name and facility pair */
140 GHashTable * base_id_name; /* facility name and base id pair*/
141
142 GPtrArray * eventtype_event_id; /* an array of eventtypes accessed
143 by event id */
144
145 ltt_arch_size my_arch_size; /* data type size of the local machine */
146 ltt_arch_endian my_arch_endian; /* endian type of the local machine */
147};
148
149
150
151
152
153/*****************************************************************************
154 macro for size of some data types
155 *****************************************************************************/
156#define EVENT_ID_SIZE sizeof(int8_t)
157#define CYCLE_COUNT_SIZE sizeof(ltt_cycle_count)
158//event id and time delta(cycle count)
159//yxx disable during the test
160//#define EVENT_HEADER_SIZE (EVENT_ID_SIZE + CYCLE_COUNT_SIZE)
161#define EVENT_HEADER_SIZE (EVENT_ID_SIZE + sizeof(uint32_t))
162
163
164
165
166/* obtain the time of an event */
167ltt_time getEventTime(ltt_tracefile * tf);
168
169/* get the data type size and endian type of the local machine */
170void getDataEndianType(ltt_arch_size * size, ltt_arch_endian * endian);
171
172
173typedef struct _ptr_wrap{
174 gpointer ptr;
175} ptr_wrap;
176
This page took 0.028437 seconds and 4 git commands to generate.