X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttv%2Flttv%2Ftracecontext.c;h=596e06f007901418939c6289952aaa4c34164143;hb=f826ad80ef4be944bdda493bf0ce8b7706d4131c;hp=0f08381a9864576f1f3218522760f83bb0e01c60;hpb=922581a4a91dcb870a6168112a6198a1afacf0bb;p=lttv.git diff --git a/lttv/lttv/tracecontext.c b/lttv/lttv/tracecontext.c index 0f08381a..596e06f0 100644 --- a/lttv/lttv/tracecontext.c +++ b/lttv/lttv/tracecontext.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -119,6 +120,8 @@ lttv_context_new_tracefile_context(LttvTracesetContext *self) void lttv_traceset_context_compute_time_span(LttvTracesetContext *self, TimeInterval *time_span) { + //todo mdenis: adapt to babeltrace +#ifdef BABEL_CLEANUP LttvTraceset * traceset = self->ts; int numTraces = lttv_traceset_number(traceset); int i; @@ -133,6 +136,7 @@ void lttv_traceset_context_compute_time_span(LttvTracesetContext *self, for(i=0; itraces[i]; + trace = tc->t; ltt_trace_time_span_get(trace, &s, &e); @@ -153,6 +157,7 @@ void lttv_traceset_context_compute_time_span(LttvTracesetContext *self, time_span->end_time = e; } } +#endif } static void init_tracefile_context(LttTracefile *tracefile, @@ -201,7 +206,8 @@ init(LttvTracesetContext *self, LttvTraceset *ts) &begin_pos, NULL); self->event_hooks = lttv_hooks_new(); -#ifdef BABEL_CLEANUP + self->tmpState = g_new(LttvTraceState *, 1); + for(i = 0 ; i < nb_trace ; i++) { tc = LTTV_TRACESET_CONTEXT_GET_CLASS(self)->new_trace_context(self); self->traces[i] = tc; @@ -209,12 +215,15 @@ init(LttvTracesetContext *self, LttvTraceset *ts) tc->ts_context = self; tc->index = i; tc->vt = lttv_traceset_get(ts, i); +#ifdef BABEL_CLEANUP tc->t = lttv_trace(tc->vt); +#endif tc->a = g_object_new(LTTV_ATTRIBUTE_TYPE, NULL); tc->t_a = lttv_trace_attribute(tc->vt); tc->tracefiles = g_array_sized_new(FALSE, TRUE, sizeof(LttvTracefileContext*), 10); +#ifdef BABEL_CLEANUP tracefiles_groups = ltt_trace_get_tracefiles_groups(tc->t); if(tracefiles_groups != NULL) { args.func = (ForEachTraceFileFunc)init_tracefile_context; @@ -224,10 +233,10 @@ init(LttvTracesetContext *self, LttvTraceset *ts) (GDataForeachFunc)compute_tracefile_group, &args); } +#endif } -#endif self->sync_position = lttv_traceset_context_position_new(self); self->pqueue = g_tree_new(compare_tracefile); lttv_process_traceset_seek_time(self, ltt_time_zero); @@ -678,20 +687,26 @@ guint lttv_process_traceset_middle(LttvTracesetContext *self, unsigned count = 0; - struct bt_ctf_event *event; + struct bt_ctf_event *bt_event; + LttvEvent event; + while(TRUE) { if((count >= nb_events) && (nb_events != G_MAXULONG)) { break; } - if((event = bt_ctf_iter_read_event(self->iter)) != NULL) { + if((bt_event = bt_ctf_iter_read_event(self->iter)) != NULL) { count++; - /* TODO ybrosseau: encapsulate the event into something */ - lttv_hooks_call(self->event_hooks, event); + event.bt_event = bt_event; + /* TODO ybrosseau 2012-04-01: use bt_ctf_get_trace_handle + to retrieve the right state container */ + event.state = self->tmpState; + + lttv_hooks_call(self->event_hooks, &event); if(bt_iter_next(bt_ctf_get_iter(self->iter)) < 0) { printf("ERROR NEXT\n"); @@ -871,9 +886,6 @@ void lttv_process_traceset_end(LttvTracesetContext *self, */ void lttv_process_trace_seek_time(LttvTraceContext *self, LttTime start) { - - -#ifdef BABEL_CLEANUP guint i, nb_tracefile; gint ret; @@ -906,7 +918,6 @@ void lttv_process_trace_seek_time(LttvTraceContext *self, LttTime start) g_debug("test tree after seek_time"); g_tree_foreach(pqueue, test_tree, NULL); #endif //DEBUG -#endif } /****************************************************************************