X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Ftracefile.c;h=5ddabdbd0adebe857d717cad29f202c400b5e4ee;hb=5a69756597a55db56efb61388060c535854f44e2;hp=ec5152f3b7174bf0d65e46e835970177e6fe10d5;hpb=f104d082727461632e7a5cc1d2a854f0ad66db07;p=lttv.git diff --git a/ltt/branches/poly/ltt/tracefile.c b/ltt/branches/poly/ltt/tracefile.c index ec5152f3..5ddabdbd 100644 --- a/ltt/branches/poly/ltt/tracefile.c +++ b/ltt/branches/poly/ltt/tracefile.c @@ -105,6 +105,9 @@ static int ltt_seek_next_event(LttTracefile *tf); void ltt_update_event_size(LttTracefile *tf); + +void precompute_offsets(LttTracefile *tf, LttEventType *event); + #if 0 /* Functions to parse system.xml file (using glib xml parser) */ static void parser_start_element (GMarkupParseContext __UNUSED__ *context, @@ -247,13 +250,13 @@ int parse_trace_header(void *header, LttTracefile *tf, LttTrace *t) return 1; } break; - case 4: + case 6: { - struct ltt_trace_header_0_4 *vheader = - (struct ltt_trace_header_0_4 *)header; + struct ltt_trace_header_0_6 *vheader = + (struct ltt_trace_header_0_6 *)header; tf->buffer_header_size = sizeof(struct ltt_block_start_header) - + sizeof(struct ltt_trace_header_0_4); + + sizeof(struct ltt_trace_header_0_6); if(t) { t->start_freq = ltt_get_uint64(LTT_GET_BO(tf), &vheader->start_freq); @@ -261,8 +264,10 @@ int parse_trace_header(void *header, LttTracefile *tf, LttTrace *t) &vheader->start_tsc); t->start_monotonic = ltt_get_uint64(LTT_GET_BO(tf), &vheader->start_monotonic); - t->start_time = ltt_get_time(LTT_GET_BO(tf), - &vheader->start_time); + t->start_time.tv_sec = ltt_get_uint64(LTT_GET_BO(tf), + &vheader->start_time_sec); + t->start_time.tv_nsec = ltt_get_uint64(LTT_GET_BO(tf), + &vheader->start_time_usec); t->start_time.tv_nsec *= 1000; /* microsec to nanosec */ t->start_time_from_tsc = ltt_time_from_uint64( @@ -973,7 +978,7 @@ static int ltt_process_facility_tracefile(LttTracefile *tf) fac->size_t_size = ltt_get_uint32(LTT_GET_BO(tf), &fac_load_data->size_t_size); fac->alignment = ltt_get_uint32(LTT_GET_BO(tf), - &fac_load_data->alignment); + &fac_load_data->has_alignment); if(ltt_get_facility_description(fac, tf->trace, tf)) continue; /* error opening description */ @@ -1029,7 +1034,7 @@ static int ltt_process_facility_tracefile(LttTracefile *tf) fac->size_t_size = ltt_get_uint32(LTT_GET_BO(tf), &fac_state_dump_load_data->size_t_size); fac->alignment = ltt_get_uint32(LTT_GET_BO(tf), - &fac_state_dump_load_data->alignment); + &fac_state_dump_load_data->has_alignment); if(ltt_get_facility_description(fac, tf->trace, tf)) continue; /* error opening description */ @@ -1662,7 +1667,7 @@ int ltt_tracefile_read_update_event(LttTracefile *tf) /* Read event header */ /* Align the head */ - pos += ltt_align(pos, tf->trace->arch_size, tf->has_alignment); + pos += ltt_align((size_t)pos, tf->trace->arch_size, tf->has_alignment); if(tf->trace->has_tsc) { if(tf->trace->has_heartbeat) { @@ -1711,7 +1716,7 @@ int ltt_tracefile_read_update_event(LttTracefile *tf) pos += sizeof(guint16); /* Align the head */ - pos += ltt_align(pos, tf->trace->arch_size, tf->has_alignment); + pos += ltt_align((size_t)pos, tf->trace->arch_size, tf->has_alignment); event->data = pos; @@ -1846,7 +1851,7 @@ map_error: /* It will update the fields offsets too */ void ltt_update_event_size(LttTracefile *tf) { - size_t size = 0; + off_t size = 0; /* Specific handling of core events : necessary to read the facility control * tracefile. */ @@ -2047,7 +2052,7 @@ void set_fields_offsets(LttTracefile *tf, LttEventType *event_type) ****************************************************************************/ off_t get_alignment(LttTracefile *tf, LttField *field) { - type = &field->field_type; + LttType *type = &field->field_type; switch(type->type_class) { case LTT_INT_FIXED: @@ -2126,7 +2131,7 @@ off_t get_alignment(LttTracefile *tf, LttField *field) void field_compute_static_size(LttTracefile *tf, LttField *field) { - type = &field->field_type; + LttType *type = &field->field_type; switch(type->type_class) { case LTT_INT_FIXED: @@ -2168,7 +2173,7 @@ void field_compute_static_size(LttTracefile *tf, LttField *field) case LTT_SEQUENCE: g_assert(type->fields->len == 2); { - local_offset = 0; + off_t local_offset = 0; LttField *child = &g_array_index(type->fields, LttField, 1); field_compute_static_size(tf, child); field->field_size = 0; @@ -2202,6 +2207,7 @@ void field_compute_static_size(LttTracefile *tf, LttField *field) break; default: g_error("field_static_size : unknown type"); + } } @@ -2222,7 +2228,7 @@ void field_compute_static_size(LttTracefile *tf, LttField *field) gint precompute_fields_offsets(LttTracefile *tf, LttField *field, off_t *offset) { - type = &field->field_type; + LttType *type = &field->field_type; switch(type->type_class) { case LTT_INT_FIXED: @@ -2587,6 +2593,8 @@ gint check_fields_compatibility(LttEventType *event_type1, LttField *field1, LttField *field2) { guint different = 0; + LttType *type1; + LttType *type2; if(field1 == NULL) { if(field2 == NULL) goto end; @@ -2599,17 +2607,13 @@ gint check_fields_compatibility(LttEventType *event_type1, goto end; } - type1 = field1->field_type; - type2 = field2->field_type; + type1 = &field1->field_type; + type2 = &field2->field_type; if(type1->type_class != type2->type_class) { different = 1; goto end; } - if(type1->element_name != type2->element_name) { - different = 1; - goto end; - } switch(type1->type_class) { case LTT_INT_FIXED: @@ -2665,6 +2669,8 @@ gint check_fields_compatibility(LttEventType *event_type1, } for(i=0; i< type1->fields->len; i++) { + LttField *child1; + LttField *child2; child1 = &g_array_index(type1->fields, LttField, i); child2 = &g_array_index(type2->fields, LttField, i); different = check_fields_compatibility(event_type1,