#include <ltt/ltt.h>
#include <endian.h>
-
#ifndef max
#define max(a,b) ((a)>(b)?(a):(b))
#endif
struct ltt_event_header_hb {
uint32_t timestamp;
- unsigned char facility_id;
- unsigned char event_id;
+ uint16_t event_id;
uint16_t event_size;
} LTT_PACKED_STRUCT;
struct ltt_event_header_nohb {
uint64_t timestamp;
- unsigned char facility_id;
- unsigned char event_id;
+ uint16_t event_id;
uint16_t event_size;
} LTT_PACKED_STRUCT;
uint32_t freq_scale;
} 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 */
- uint32_t freq_scale;
-} LTT_PACKED_STRUCT;
-
-/* For version 0.7 */
-
-struct ltt_trace_header_0_7 {
- 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 */
- uint32_t freq_scale;
- uint64_t start_freq;
- uint64_t start_tsc;
- uint64_t start_monotonic;
- uint64_t start_time_sec;
- uint64_t start_time_usec;
-} LTT_PACKED_STRUCT;
-
-/* For version 0.8 */
-
-struct ltt_trace_header_0_8 {
+struct ltt_trace_header_1_0 {
uint32_t magic_number;
uint32_t arch_type;
uint32_t arch_variant;
guint size;
LttTypeEnum type_class; //which type
GHashTable *enum_map; //maps enum labels to numbers.
+ gint32 highest_value; //For enum
+ gint32 lowest_value; //For enum
GArray *fields; // Array of LttFields, for array, sequence, union, struct.
GData *fields_by_name;
guint network; // Is the type in network byte order ?
+ //part added by gaby for fmt:
+ char *header;
+ char *separator;
+ char *footer;
};
struct _LttEventType{
GQuark name;
gchar * description;
guint index; //id of the event type within the facility
- LttFacility * facility; //the facility that contains the event type
+ struct marker_info *info;
GArray * fields; //event's fields (LttField)
GData *fields_by_name;
int has_compact_data; //event header contains compact data (first field)
guint32 timestamp; /* truncated timestamp */
- unsigned char facility_id; /* facility ID are never reused. */
- unsigned char event_id;
+ guint16 event_id;
LttTime event_time;
// contain variable length fields.
};
+#if 0
struct _LttFacility{
LttTrace *trace;
GQuark name;
unsigned char exists; /* 0 does not exist, 1 exists */
};
+#endif //0
typedef struct _LttBuffer {
void * head;
size_t has_alignment; //alignment of events in the tracefile.
// 0 or the architecture size in bytes.
+ guint8 has_heartbeat;
size_t buffer_header_size;
int compact; //compact tracefile ?
uint8_t tsc_lsb_truncate;
guint8 ltt_major_version;
guint8 ltt_minor_version;
guint8 flight_recorder;
- guint8 has_heartbeat;
guint32 freq_scale;
uint64_t start_freq;
uint64_t start_tsc;
uint64_t start_monotonic;
LttTime start_time;
LttTime start_time_from_tsc;
- GArray *compact_facilities;
uint8_t compact_event_bits;
GData *tracefiles; //tracefiles groups
+ /* Support for markers */
+ GArray *markers; //indexed by marker ID
+ GHashTable *markers_hash; //indexed by name hash
};
/* The characteristics of the system on which the trace was obtained