X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=lttv%2Fmodules%2Fgui%2Fcontrolflow%2Feventhooks.c;h=70ce458d17074f7aece70ace81073db2a61ecd4a;hb=8924e3e4b9f77267572f4fe0d4430748c27e66ea;hp=ff056aced7c892edd70e97429d8eddbb6eaf981b;hpb=8d8c5ea79a434752faf43cd66acc38196d25268d;p=lttv.git diff --git a/lttv/modules/gui/controlflow/eventhooks.c b/lttv/modules/gui/controlflow/eventhooks.c index ff056ace..70ce458d 100644 --- a/lttv/modules/gui/controlflow/eventhooks.c +++ b/lttv/modules/gui/controlflow/eventhooks.c @@ -113,27 +113,27 @@ static gint background_ready(void *hook_data, void *call_data) /* Request background computation. Verify if it is in progress or ready first. * Only for each trace in the tab's traceset. */ + static void request_background_data(ControlFlowData *control_flow_data) { - LttvTracesetContext * tsc = - lttvwindow_get_traceset_context(control_flow_data->tab); - gint num_traces = lttv_traceset_number(tsc->ts); + + LttvTraceset *ts = lttvwindow_get_traceset(control_flow_data->tab); + gint num_traces = lttv_traceset_number(ts); gint i; LttvTrace *trace; LttvTraceState *tstate; - LttvHooks *background_ready_hook = - lttv_hooks_new(); + LttvHooks *background_ready_hook = lttv_hooks_new(); lttv_hooks_add(background_ready_hook, background_ready, control_flow_data, LTTV_PRIO_DEFAULT); control_flow_data->background_info_waiting = 0; for(i=0;its, i); - tstate = LTTV_TRACE_STATE(tsc->traces[i]); + trace = lttv_traceset_get(ts, i); + tstate = trace->state; if(lttvwindowtraces_get_ready(g_quark_from_string("state"),trace)==FALSE - && !tstate->has_precomputed_states) { + && !ts->has_precomputed_states) { if(lttvwindowtraces_get_in_progress(g_quark_from_string("state"), trace) == FALSE) { @@ -245,6 +245,12 @@ static inline PropertiesLine prepare_s_e_line(LttvProcessState *process) prop_line.color = drawing_colors[COL_RUN_IRQ]; else if(process->state->t == LTTV_STATE_SOFT_IRQ) prop_line.color = drawing_colors[COL_RUN_SOFT_IRQ]; + else if(process->state->t == LTTV_STATE_MAYBE_SYSCALL) + prop_line.color = drawing_colors[COL_MODE_UNKNOWN]; + else if(process->state->t == LTTV_STATE_MAYBE_USER_MODE) + prop_line.color = drawing_colors[COL_MODE_UNKNOWN]; + else if(process->state->t == LTTV_STATE_MAYBE_TRAP) + prop_line.color = drawing_colors[COL_MODE_UNKNOWN]; else if(process->state->t == LTTV_STATE_MODE_UNKNOWN) prop_line.color = drawing_colors[COL_MODE_UNKNOWN]; else @@ -281,8 +287,10 @@ static inline PropertiesLine prepare_s_e_line(LttvProcessState *process) int before_trywakeup_hook(void *hook_data, void *call_data) { +#ifdef BABEL_CLEANUP LttvTraceHook *th = (LttvTraceHook*)hook_data; EventsRequest *events_request = (EventsRequest*)th->hook_data; + ControlFlowData *control_flow_data = events_request->viewer_data; LttvTracefileContext *tfc = (LttvTracefileContext *)call_data; @@ -464,6 +472,7 @@ int before_trywakeup_hook(void *hook_data, void *call_data) tfc->target_pid = target_pid_saved; return 0; +#endif //babel_cleanup } @@ -487,54 +496,46 @@ int before_trywakeup_hook(void *hook_data, void *call_data) int before_schedchange_hook(void *hook_data, void *call_data) { - LttvTraceHook *th = (LttvTraceHook*)hook_data; - EventsRequest *events_request = (EventsRequest*)th->hook_data; - ControlFlowData *control_flow_data = events_request->viewer_data; - - LttvTracefileContext *tfc = (LttvTracefileContext *)call_data; - - LttvTracefileState *tfs = (LttvTracefileState *)call_data; - LttvTraceState *ts = (LttvTraceState *)tfc->t_context; - - LttEvent *e; - e = ltt_tracefile_get_event(tfc->tf); - gint target_pid_saved = tfc->target_pid; + LttvEvent *event; + guint cpu; + LttvTraceState *ts; + LttvProcessState *process; + + //LttvProcessState *old_process = ts->running_process[cpu]; + + guint pid_in, pid_out; + gint64 state_out; + LttTime timestamp; + event = (LttvEvent *) call_data; + if (strcmp(lttv_traceset_get_name_from_event(event),"sched_switch") != 0) + return FALSE; + + ControlFlowData *control_flow_data = (ControlFlowData*)hook_data; - LttTime evtime = ltt_event_time(e); - LttvFilter *filter = control_flow_data->filter; /* we are in a schedchange, before the state update. We must draw the * items corresponding to the state before it changes : now is the right * time to do it. */ - - guint pid_out; - guint pid_in; - guint state_out; - { - pid_out = ltt_event_get_long_unsigned(e, lttv_trace_get_hook_field(th, 0)); - pid_in = ltt_event_get_long_unsigned(e, lttv_trace_get_hook_field(th, 1)); - state_out = ltt_event_get_long_unsigned(e, lttv_trace_get_hook_field(th, 2)); - } + cpu = lttv_traceset_get_cpuid_from_event(event); + ts = event->state; - tfc->target_pid = pid_out; - if(!filter || !filter->head || - lttv_filter_tree_parse(filter->head,e,tfc->tf, - tfc->t_context->t,tfc,NULL,NULL)) { + pid_out = lttv_event_get_long(event, "prev_tid"); + pid_in = lttv_event_get_long(event, "next_tid"); + state_out = lttv_event_get_long(event, "prev_state"); + guint trace_number = 0;//TODO fdeslauriers 2012-07-17: // Use trace handle to know trace number + + process = lttv_state_find_process(ts,cpu,pid_out); + timestamp = lttv_event_get_timestamp(event); /* For the pid_out */ /* First, check if the current process is in the state computation * process list. If it is there, that means we must add it right now and * draw items from the beginning of the read for it. If it is not * present, it's a new process and it was not present : it will * be added after the state update. */ - guint cpu = tfs->cpu; - guint trace_num = ts->parent.index; - LttvProcessState *process = ts->running_process[cpu]; - /* unknown state, bad current pid */ - if(process->pid != pid_out) - process = lttv_state_find_process(ts, - tfs->cpu, pid_out); + /* unknown state, bad current pid */ + if(process != NULL) { /* Well, the process_out existed : we must get it in the process hash * or add it, and draw its items. @@ -549,7 +550,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) pid_out, process->cpu, &birth, - trace_num); + trace_number); if(hashed_process_data == NULL) { g_assert(pid_out == 0 || pid_out != process->ppid); @@ -563,7 +564,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) process->cpu, process->ppid, &birth, - trace_num, + trace_number, process->name, process->brand, &pl_height, @@ -575,13 +576,12 @@ int before_schedchange_hook(void *hook_data, void *call_data) gtk_widget_queue_draw(drawing->drawing_area); } - /* Now, the process is in the state hash and our own process hash. * We definitely can draw the items related to the ending state. */ if(ltt_time_compare(hashed_process_data->next_good_time, - evtime) > 0) + timestamp) > 0) { if(hashed_process_data->x.middle_marked == FALSE) { @@ -597,7 +597,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) guint x; convert_time_to_pixels( time_window, - evtime, + timestamp, width, &x); @@ -622,7 +622,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) guint x; convert_time_to_pixels( time_window, - evtime, + timestamp, width, &x); @@ -680,22 +680,14 @@ int before_schedchange_hook(void *hook_data, void *call_data) } } } - } - tfc->target_pid = pid_in; - if(!filter || !filter->head || - lttv_filter_tree_parse(filter->head,e,tfc->tf, - tfc->t_context->t,tfc,NULL,NULL)) { /* For the pid_in */ /* First, check if the current process is in the state computation * process list. If it is there, that means we must add it right now and * draw items from the beginning of the read for it. If it is not * present, it's a new process and it was not present : it will * be added after the state update. */ - LttvProcessState *process; - process = lttv_state_find_process(ts, - tfs->cpu, pid_in); - guint trace_num = ts->parent.index; + process = lttv_state_find_process(ts,cpu,pid_in); if(process != NULL) { /* Well, the process existed : we must get it in the process hash @@ -709,9 +701,9 @@ int before_schedchange_hook(void *hook_data, void *call_data) hashed_process_data = processlist_get_process_data(process_list, pid_in, - tfs->cpu, + cpu, &birth, - trace_num); + trace_number);//TODO "use the right value or delete" if(hashed_process_data == NULL) { g_assert(pid_in == 0 || pid_in != process->ppid); @@ -722,10 +714,10 @@ int before_schedchange_hook(void *hook_data, void *call_data) drawing, pid_in, process->tgid, - tfs->cpu, + cpu, process->ppid, &birth, - trace_num, + trace_number, process->name, process->brand, &pl_height, @@ -745,7 +737,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) */ if(ltt_time_compare(hashed_process_data->next_good_time, - evtime) > 0) + timestamp) > 0) { if(hashed_process_data->x.middle_marked == FALSE) { @@ -761,7 +753,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) guint x; convert_time_to_pixels( time_window, - evtime, + timestamp, width, &x); @@ -787,7 +779,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) convert_time_to_pixels( time_window, - evtime, + timestamp, width, &x); @@ -847,8 +839,9 @@ int before_schedchange_hook(void *hook_data, void *call_data) } } else g_warning("Cannot find pin_in in schedchange %u", pid_in); - } +#ifdef BABEL_CLEANUP tfc->target_pid = target_pid_saved; +#endif //babel_cleanup return 0; @@ -888,6 +881,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) */ int after_schedchange_hook(void *hook_data, void *call_data) { +#ifdef BABEL_CLEANUP LttvTraceHook *th = (LttvTraceHook*)hook_data; EventsRequest *events_request = (EventsRequest*)th->hook_data; ControlFlowData *control_flow_data = events_request->viewer_data; @@ -914,8 +908,6 @@ int after_schedchange_hook(void *hook_data, void *call_data) guint pid_in; { - guint pid_out; - pid_out = ltt_event_get_long_unsigned(e, lttv_trace_get_hook_field(th, 0)); pid_in = ltt_event_get_long_unsigned(e, lttv_trace_get_hook_field(th, 1)); } @@ -998,6 +990,7 @@ int after_schedchange_hook(void *hook_data, void *call_data) } return 0; +#endif //babel_cleanup } @@ -1023,36 +1016,33 @@ int after_schedchange_hook(void *hook_data, void *call_data) int before_execmode_hook(void *hook_data, void *call_data) { - LttvTraceHook *th = (LttvTraceHook*)hook_data; - EventsRequest *events_request = (EventsRequest*)th->hook_data; - ControlFlowData *control_flow_data = events_request->viewer_data; - - LttvTracefileContext *tfc = (LttvTracefileContext *)call_data; - - LttvTracefileState *tfs = (LttvTracefileState *)call_data; - - LttvTraceState *ts = (LttvTraceState *)tfc->t_context; - - LttEvent *e; - e = ltt_tracefile_get_event(tfc->tf); - - LttvFilter *filter = control_flow_data->filter; - if(filter != NULL && filter->head != NULL) - if(!lttv_filter_tree_parse(filter->head,e,tfc->tf, - tfc->t_context->t,tfc,NULL,NULL)) - return FALSE; - - LttTime evtime = ltt_event_time(e); - + LttvEvent *event; + guint cpu; + guint pid; + LttvTraceState *ts; + LttvProcessState *process; + /* we are in a execmode, before the state update. We must draw the * items corresponding to the state before it changes : now is the right * time to do it. */ + + event = (LttvEvent *) call_data; + if ((strncmp(lttv_traceset_get_name_from_event(event),"sys_", sizeof("sys_") - 1) == 0) + ||(strcmp(lttv_traceset_get_name_from_event(event),"exit_syscall") == 0) + ||(strncmp(lttv_traceset_get_name_from_event(event),"irq_handler_",sizeof("irq_handler_")) == 0) + ||(strncmp(lttv_traceset_get_name_from_event(event),"softirq_", sizeof("softirq_")) == 0)){ + + LttTime evtime = lttv_event_get_timestamp(event); + ControlFlowData *control_flow_data = (ControlFlowData*)hook_data; /* For the pid */ - //LttvProcessState *process = tfs->process; - guint cpu = tfs->cpu; - guint trace_num = ts->parent.index; - LttvProcessState *process = ts->running_process[cpu]; + LttvTraceset *traceSet = lttvwindow_get_traceset(control_flow_data->tab); + + cpu = lttv_traceset_get_cpuid_from_event(event); + ts = event->state; + + guint trace_number = 0;//TODO fdeslauriers 2012-07-17: // Use trace handle to know trace number + process = lttv_state_find_process(ts ,cpu ,pid); g_assert(process != NULL); guint pid = process->pid; @@ -1064,16 +1054,20 @@ int before_execmode_hook(void *hook_data, void *call_data) guint pl_height = 0; HashedProcessData *hashed_process_data = NULL; ProcessList *process_list = control_flow_data->process_list; + if(process_list->current_hash_data == NULL){//TODO fdeslauriers 2012-07-17 : should not be necessary + return 0; + } + LttTime birth = process->creation_time; - if(likely(process_list->current_hash_data[trace_num][cpu] != NULL)) { - hashed_process_data = process_list->current_hash_data[trace_num][cpu]; + if(likely(process_list->current_hash_data[trace_number][cpu] != NULL)) { + hashed_process_data = process_list->current_hash_data[trace_number][cpu]; } else { hashed_process_data = processlist_get_process_data(process_list, pid, process->cpu, &birth, - trace_num); + trace_number); if(unlikely(hashed_process_data == NULL)) { g_assert(pid == 0 || pid != process->ppid); @@ -1087,7 +1081,7 @@ int before_execmode_hook(void *hook_data, void *call_data) process->cpu, process->ppid, &birth, - trace_num, + trace_number, process->name, process->brand, &pl_height, @@ -1099,7 +1093,7 @@ int before_execmode_hook(void *hook_data, void *call_data) gtk_widget_queue_draw(drawing->drawing_area); } /* Set the current process */ - process_list->current_hash_data[trace_num][process->cpu] = + process_list->current_hash_data[trace_number][process->cpu] = hashed_process_data; } @@ -1208,7 +1202,7 @@ int before_execmode_hook(void *hook_data, void *call_data) &hashed_process_data->next_good_time); } } - + } return 0; } @@ -1226,6 +1220,7 @@ int before_execmode_hook(void *hook_data, void *call_data) int before_process_exit_hook(void *hook_data, void *call_data) { +#ifdef BABEL_CLEANUP LttvTraceHook *th = (LttvTraceHook*)hook_data; EventsRequest *events_request = (EventsRequest*)th->hook_data; @@ -1405,6 +1400,7 @@ int before_process_exit_hook(void *hook_data, void *call_data) } return 0; +#endif //babel_cleanup } @@ -1424,6 +1420,7 @@ int before_process_exit_hook(void *hook_data, void *call_data) int before_process_release_hook(void *hook_data, void *call_data) { +#ifdef BABEL_CLEANUP LttvTraceHook *th = (LttvTraceHook*)hook_data; EventsRequest *events_request = (EventsRequest*)th->hook_data; @@ -1587,6 +1584,7 @@ int before_process_release_hook(void *hook_data, void *call_data) } return 0; +#endif //babel_cleanup } @@ -1606,6 +1604,7 @@ int before_process_release_hook(void *hook_data, void *call_data) */ int after_process_fork_hook(void *hook_data, void *call_data) { +#ifdef BABEL_CLEANUP LttvTraceHook *th = (LttvTraceHook*)hook_data; EventsRequest *events_request = (EventsRequest*)th->hook_data; ControlFlowData *control_flow_data = events_request->viewer_data; @@ -1721,6 +1720,7 @@ int after_process_fork_hook(void *hook_data, void *call_data) } } return FALSE; +#endif //babel_cleanup } @@ -1738,6 +1738,7 @@ int after_process_fork_hook(void *hook_data, void *call_data) */ int after_process_exit_hook(void *hook_data, void *call_data) { +#ifdef BABEL_CLEANUP LttvTraceHook *th = (LttvTraceHook*)hook_data; EventsRequest *events_request = (EventsRequest*)th->hook_data; ControlFlowData *control_flow_data = events_request->viewer_data; @@ -1842,12 +1843,14 @@ int after_process_exit_hook(void *hook_data, void *call_data) } return FALSE; +#endif //babel_cleanup } /* Get the filename of the process to print */ int after_fs_exec_hook(void *hook_data, void *call_data) { +#ifdef BABEL_CLEANUP LttvTraceHook *th = (LttvTraceHook*)hook_data; EventsRequest *events_request = (EventsRequest*)th->hook_data; ControlFlowData *control_flow_data = events_request->viewer_data; @@ -1923,12 +1926,14 @@ int after_fs_exec_hook(void *hook_data, void *call_data) processlist_set_name(process_list, process->name, hashed_process_data); return 0; +#endif //babel_cleanup } /* Get the filename of the process to print */ int after_user_generic_thread_brand_hook(void *hook_data, void *call_data) { +#ifdef BABEL_CLEANUP LttvTraceHook *th = (LttvTraceHook*)hook_data; EventsRequest *events_request = (EventsRequest*)th->hook_data; ControlFlowData *control_flow_data = events_request->viewer_data; @@ -2004,7 +2009,7 @@ int after_user_generic_thread_brand_hook(void *hook_data, void *call_data) processlist_set_brand(process_list, process->brand, hashed_process_data); return 0; - +#endif //babel_cleanup } @@ -2021,6 +2026,7 @@ int after_user_generic_thread_brand_hook(void *hook_data, void *call_data) */ int after_event_enum_process_hook(void *hook_data, void *call_data) { +#ifdef BABEL_CLEANUP LttvTraceHook *th = (LttvTraceHook*)hook_data; EventsRequest *events_request = (EventsRequest*)th->hook_data; ControlFlowData *control_flow_data = events_request->viewer_data; @@ -2115,6 +2121,7 @@ int after_event_enum_process_hook(void *hook_data, void *call_data) } } return 0; +#endif //babel_cleanup } @@ -2424,10 +2431,11 @@ gint continue_notify(void *hook_data, void *call_data) gint update_current_time_hook(void *hook_data, void *call_data) { + ControlFlowData *control_flow_data = (ControlFlowData*)hook_data; LttTime current_time = *((LttTime*)call_data); - + TimeWindow time_window = lttvwindow_get_time_window(control_flow_data->tab); @@ -2441,11 +2449,11 @@ gint update_current_time_hook(void *hook_data, void *call_data) } LttTime time_end = ltt_time_add(time_begin, width); - LttvTracesetContext * tsc = - lttvwindow_get_traceset_context(control_flow_data->tab); + LttvTraceset * ts = lttvwindow_get_traceset(control_flow_data->tab); - LttTime trace_start = tsc->time_span.start_time; - LttTime trace_end = tsc->time_span.end_time; + TimeInterval time_span = lttv_traceset_get_time_span_real(ts); + LttTime trace_start = time_span.start_time; + LttTime trace_end = time_span.end_time; g_info("New current time HOOK : %lu, %lu", current_time.tv_sec, current_time.tv_nsec); @@ -2503,11 +2511,11 @@ gint update_current_time_hook(void *hook_data, void *call_data) TRUE); return 0; + } typedef struct _ClosureData { EventsRequest *events_request; - LttvTracesetState *tss; LttTime end_time; guint x_end; } ClosureData; @@ -2515,15 +2523,15 @@ typedef struct _ClosureData { void draw_closure(gpointer key, gpointer value, gpointer user_data) { + ProcessInfo *process_info = (ProcessInfo*)key; HashedProcessData *hashed_process_data = (HashedProcessData*)value; ClosureData *closure_data = (ClosureData*)user_data; - + EventsRequest *events_request = closure_data->events_request; ControlFlowData *control_flow_data = events_request->viewer_data; + LttvTraceset *ts = lttvwindow_get_traceset(control_flow_data->tab); - LttvTracesetState *tss = closure_data->tss; - LttvTracesetContext *tsc = (LttvTracesetContext*)tss; LttTime evtime = closure_data->end_time; @@ -2539,8 +2547,9 @@ void draw_closure(gpointer key, gpointer value, gpointer user_data) #ifdef EXTRA_CHECK g_assert(lttv_traceset_number(tsc->ts) > 0); #endif //EXTRA_CHECK - LttvTraceContext *tc = tsc->traces[process_info->trace_num]; - LttvTraceState *ts = (LttvTraceState*)tc; + //TODO Fdeslauriers 2012-07-17: adapt for multiple traces + LttvTrace *trace = lttv_traceset_get(ts,0); + LttvTraceState *trace_state = trace->state; #if 0 //FIXME : optimize data structures. @@ -2557,22 +2566,22 @@ void draw_closure(gpointer key, gpointer value, gpointer user_data) g_assert(itracefiles->len); tfs = LTTV_TRACEFILE_STATE(tfc); #endif //0 - // LttvTracefileState *tfs = + // LttvTracefileState *tfs =ts // (LttvTracefileState*)tsc->traces[process_info->trace_num]-> // tracefiles[process_info->cpu]; LttvProcessState *process; - process = lttv_state_find_process(ts, process_info->cpu, + process = lttv_state_find_process(trace_state, process_info->cpu, process_info->pid); if(unlikely(process != NULL)) { - +#ifdef BABEL_CLEANUP LttvFilter *filter = control_flow_data->filter; if(filter != NULL && filter->head != NULL) if(!lttv_filter_tree_parse(filter->head,NULL,NULL, tc->t,NULL,process,tc)) dodraw = FALSE; - +#endif //babel_cleanup /* Only draw for processes that are currently in the trace states */ #ifdef EXTRA_CHECK @@ -2677,8 +2686,9 @@ void draw_closure(gpointer key, gpointer value, gpointer user_data) int before_chunk(void *hook_data, void *call_data) { + EventsRequest *events_request = (EventsRequest*)hook_data; - LttvTracesetState *tss = (LttvTracesetState*)call_data; + LttvTraceset *ts = (LttvTraceset*)call_data; #if 0 /* Desactivate sort */ gtk_tree_sortable_set_sort_column_id( @@ -2686,19 +2696,20 @@ int before_chunk(void *hook_data, void *call_data) TRACE_COLUMN, GTK_SORT_ASCENDING); #endif //0 - drawing_chunk_begin(events_request, tss); + drawing_chunk_begin(events_request, ts); return 0; } int before_request(void *hook_data, void *call_data) { + EventsRequest *events_request = (EventsRequest*)hook_data; - LttvTracesetState *tss = (LttvTracesetState*)call_data; - drawing_data_request_begin(events_request, tss); + drawing_data_request_begin(events_request); return 0; + } @@ -2713,16 +2724,15 @@ int before_request(void *hook_data, void *call_data) */ int after_request(void *hook_data, void *call_data) { + EventsRequest *events_request = (EventsRequest*)hook_data; ControlFlowData *control_flow_data = events_request->viewer_data; - LttvTracesetState *tss = (LttvTracesetState*)call_data; ProcessList *process_list = control_flow_data->process_list; LttTime end_time = events_request->end_time; ClosureData closure_data; closure_data.events_request = (EventsRequest*)hook_data; - closure_data.tss = tss; closure_data.end_time = end_time; TimeWindow time_window = @@ -2741,7 +2751,7 @@ int after_request(void *hook_data, void *call_data) /* Request expose */ - drawing_request_expose(events_request, tss, end_time); + drawing_request_expose(events_request, end_time); return 0; } @@ -2752,17 +2762,16 @@ int after_request(void *hook_data, void *call_data) */ int after_chunk(void *hook_data, void *call_data) { + EventsRequest *events_request = (EventsRequest*)hook_data; ControlFlowData *control_flow_data = events_request->viewer_data; - LttvTracesetState *tss = (LttvTracesetState*)call_data; - LttvTracesetContext *tsc = (LttvTracesetContext*)call_data; - LttvTracefileContext *tfc = lttv_traceset_context_get_current_tfc(tsc); + LttvTraceset *ts = (LttvTraceset*)call_data; + LttTime end_time; ProcessList *process_list = control_flow_data->process_list; guint i; - LttvTraceset *traceset = tsc->ts; - guint nb_trace = lttv_traceset_number(traceset); + guint nb_trace = lttv_traceset_number(ts); /* Only execute when called for the first trace's events request */ if(!process_list->current_hash_data) @@ -2774,14 +2783,10 @@ int after_chunk(void *hook_data, void *call_data) g_free(process_list->current_hash_data); process_list->current_hash_data = NULL; - if(tfc != NULL) - end_time = LTT_TIME_MIN(tfc->timestamp, events_request->end_time); - else /* end of traceset, or position now out of request : end */ end_time = events_request->end_time; ClosureData closure_data; closure_data.events_request = (EventsRequest*)hook_data; - closure_data.tss = tss; closure_data.end_time = end_time; TimeWindow time_window = @@ -2808,8 +2813,8 @@ int after_chunk(void *hook_data, void *call_data) gtk_widget_queue_draw(control_flow_data->drawing->drawing_area); #endif //0 /* Request expose (updates damages zone also) */ - drawing_request_expose(events_request, tss, end_time); + drawing_request_expose(events_request, end_time); return 0; } @@ -2823,6 +2828,7 @@ int after_chunk(void *hook_data, void *call_data) */ int before_statedump_end(void *hook_data, void *call_data) { +#ifdef BABEL_CLEANUP LttvTraceHook *th = (LttvTraceHook*)hook_data; EventsRequest *events_request = (EventsRequest*)th->hook_data; ControlFlowData *control_flow_data = events_request->viewer_data; @@ -2875,4 +2881,5 @@ int before_statedump_end(void *hook_data, void *call_data) drawing_request_expose(events_request, tss, evtime); return 0; +#endif //babel_cleanup }