X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Ftracefile.c;h=d37c694d6b0349af5120a89ebf1dc27724a2bcdd;hb=08a986f1cdbafcf23ef4eb6665f59860d044914a;hp=553bed14ae9a771d3d7b30c37aa76e3f58148886;hpb=91f8d488607f78334aee6fda44668b0b4377c2a5;p=lttv.git diff --git a/ltt/branches/poly/ltt/tracefile.c b/ltt/branches/poly/ltt/tracefile.c index 553bed14..d37c694d 100644 --- a/ltt/branches/poly/ltt/tracefile.c +++ b/ltt/branches/poly/ltt/tracefile.c @@ -274,6 +274,7 @@ int parse_trace_header(void *header, LttTracefile *tf, LttTrace *t) tf->tsc_lsb_truncate = vheader->tsc_lsb_truncate; tf->tscbits = vheader->tscbits; tf->tsc_msb_cutoff = 32 - tf->tsc_lsb_truncate - tf->tscbits; + tf->compact_event_bits = 32 - vheader->compact_data_shift; tf->tsc_mask = ((1ULL << (tf->tscbits))-1); tf->tsc_mask = tf->tsc_mask << tf->tsc_lsb_truncate; tf->tsc_mask_next_bit = (1ULL<<(tf->tscbits)); @@ -297,7 +298,6 @@ int parse_trace_header(void *header, LttTracefile *tf, LttTrace *t) (double)t->start_tsc * (1000000000.0 / tf->trace->freq_scale) / (double)t->start_freq); - t->compact_event_bits = 0; } } break; @@ -926,7 +926,8 @@ int open_tracefiles(LttTrace *trace, gchar *root_path, gchar *relative_path) if(num+1 > old_len) group = g_array_set_size(group, num+1); g_array_index (group, LttTracefile, num) = tmp_tf; - + g_array_index (group, LttTracefile, num).event.tracefile = + &g_array_index (group, LttTracefile, num); } } @@ -1755,7 +1756,7 @@ static void print_debug_event_header(LttEvent *ev, void *start_pos, void *end_po int i, j; g_printf("Event header (tracefile %s offset %llx):\n", - g_quark_to_string(ev->tracefile->name), + g_quark_to_string(ev->tracefile->long_name), ((uint64_t)ev->tracefile->buffer.index * ev->tracefile->buf_size) + (long)start_pos - (long)ev->tracefile->buffer.head); @@ -2038,7 +2039,7 @@ static void print_debug_event_data(LttEvent *ev) return; g_printf("Event data (tracefile %s offset %llx):\n", - g_quark_to_string(ev->tracefile->name), + g_quark_to_string(ev->tracefile->long_name), ((uint64_t)ev->tracefile->buffer.index * ev->tracefile->buf_size) + (long)ev->data - (long)ev->tracefile->buffer.head); @@ -2141,6 +2142,16 @@ void ltt_update_event_size(LttTracefile *tf) if (a_event_debug) print_debug_event_data(&tf->event); + /* Having a marker load or marker format event out of the facilities + * tracefiles is a serious bug. */ + switch((enum marker_id)tf->event.event_id) { + case MARKER_ID_SET_MARKER_ID: + case MARKER_ID_SET_MARKER_FORMAT: + if (tf->name != g_quark_from_string("/control/facilities")) + g_error("Trace inconsistency : metadata event found in data " + "tracefile %s", g_quark_to_string(tf->long_name)); + } + if (tf->event.data_size != tf->event.event_size) { struct marker_info *info = marker_get_info_from_id(tf->trace, tf->event.event_id); @@ -3215,7 +3226,10 @@ LttTime ltt_trace_start_time_monotonic(LttTrace *t) LttTracefile *ltt_tracefile_new() { - return g_new(LttTracefile, 1); + LttTracefile *tf; + tf = g_new(LttTracefile, 1); + tf->event.tracefile = tf; + return tf; } void ltt_tracefile_destroy(LttTracefile *tf)