#define max(a,b) ((a)>(b)?(a):(b))
#endif
+#ifndef min
+#define min(a,b) ((a)<(b)?(a):(b))
+#endif
+
+
#define LTT_MAGIC_NUMBER 0x00D6B7ED
#define LTT_REV_MAGIC_NUMBER 0xEDB7D600
uint8_t has_tsc;
} LTT_PACKED_STRUCT;
-/* For version 0.4 */
+/* For version 0.6 */
-struct ltt_trace_header_0_4 {
+struct ltt_trace_header_0_6 {
uint32_t magic_number;
uint32_t arch_type;
uint32_t arch_variant;
uint8_t flight_recorder;
uint8_t has_heartbeat;
uint8_t has_alignment; /* Event header alignment */
- uint8_t has_tsc;
+ uint8_t has_tsc;
uint64_t start_freq;
uint64_t start_tsc;
uint64_t start_monotonic;
- struct timeval start_time;
+ //struct timespec start_time; // not portable
+ uint64_t start_time_sec;
+ uint64_t start_time_usec;
} LTT_PACKED_STRUCT;
struct ltt_block_start_header {
struct {
- struct timeval timestamp;
+ //struct timeval timestamp;
+ uint64_t timestamp_sec;
+ uint64_t timestamp_usec;
uint64_t cycle_count;
uint64_t freq;
} begin;
struct {
- struct timeval timestamp;
+ //struct timeval timestamp;
+ uint64_t timestamp_sec;
+ uint64_t timestamp_usec;
uint64_t cycle_count;
uint64_t freq;
} end;
gchar * fmt;
guint size;
LttTypeEnum type_class; //which type
- GData *enum_map; //maps enum labels to numbers.
+ GHashTable *enum_map; //maps enum labels to numbers.
GArray *fields; // Array of LttFields, for array, sequence, union, struct.
GData *fields_by_name;
};
size_t has_alignment)
{
size_t alignment = min(has_alignment, size_of_type);
-
+
+ if(!has_alignment) return 0;
+
return ((alignment - align_drift) & (alignment-1));
}
-off_t field_align(LttTracefile *tf, LttField *field, off_t offset);
-
#endif /* LTT_PRIVATE_H */