X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=lttv%2Fmodules%2Fgui%2Fcontrolflow%2Feventhooks.c;h=242f9457956e0d4c45409c3372a4f040b3dea409;hb=190724cdfc53eeebfd895b594f875b53a72adf37;hp=f8e880f4ae8dd8889a5b217e3fd8fd723fec7730;hpb=31799520a31b5115bcf39b56619a08316c773f8f;p=lttv.git diff --git a/lttv/modules/gui/controlflow/eventhooks.c b/lttv/modules/gui/controlflow/eventhooks.c index f8e880f4..242f9457 100644 --- a/lttv/modules/gui/controlflow/eventhooks.c +++ b/lttv/modules/gui/controlflow/eventhooks.c @@ -59,10 +59,6 @@ //#include -#include -#include -#include - #include #include #include @@ -130,8 +126,7 @@ static void request_background_data(ControlFlowData *control_flow_data) for(i=0;istate; - + if(lttvwindowtraces_get_ready(g_quark_from_string("state"),trace)==FALSE && !ts->has_precomputed_states) { @@ -501,7 +496,7 @@ int before_trywakeup_hook(void *hook_data, void *call_data) * 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. TOCHECK: What does that last para mean? */ - guint trace_num = 0; /*TODO ybrosseau 2012-08-23: use right number */ + guint trace_num = lttv_traceset_get_trace_index_from_event(event); LttvProcessState *process = lttv_state_find_process(ts, woken_cpu, woken_pid); if(process != NULL) { @@ -578,7 +573,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) 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 + guint trace_number = lttv_traceset_get_trace_index_from_event(event); process = lttv_state_find_process(ts,cpu,pid_out); evtime = lttv_event_get_timestamp(event); @@ -637,7 +632,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) evtime ); } else - g_warning("Cannot find pin_in in schedchange %u", pid_in); + g_warning("Cannot find pid_in in schedchange %u at %u.%u", pid_in, evtime.tv_sec, evtime.tv_nsec); #ifdef BABEL_CLEANUP tfc->target_pid = target_pid_saved; #endif //babel_cleanup @@ -719,7 +714,7 @@ int after_schedchange_hook(void *hook_data, void *call_data) //process_in = lttv_state_find_process(ts, ANY_CPU, pid_in); //process_in = tfs->process; guint cpu = lttv_traceset_get_cpuid_from_event(event); - guint trace_num = 0; /* TODO set right trace number */ + guint trace_num = lttv_traceset_get_trace_index_from_event(event); process_in = ts->running_process[cpu]; /* It should exist, because we are after the state update. */ #ifdef EXTRA_CHECK @@ -800,8 +795,8 @@ int before_execmode_hook(void *hook_data, void *call_data) 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)) { + ||(strncmp(lttv_traceset_get_name_from_event(event),"irq_handler_",sizeof("irq_handler_") -1) == 0) + ||(strncmp(lttv_traceset_get_name_from_event(event),"softirq_", sizeof("softirq_") - 1) == 0)) { LttTime evtime = lttv_event_get_timestamp(event); ControlFlowData *control_flow_data = (ControlFlowData*)hook_data; @@ -811,8 +806,12 @@ int before_execmode_hook(void *hook_data, void *call_data) 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); + guint trace_number = lttv_traceset_get_trace_index_from_event(event); + + //TODO ybrosseau 2013-04-09 validate that using the running process is the right choice + //process = lttv_state_find_process(ts ,cpu ,pid); + process = ts->running_process[cpu]; + g_assert(process != NULL); guint pid = process->pid; @@ -891,7 +890,7 @@ int before_process_exit_hook(void *hook_data, void *call_data) /* Add process to process list (if not present) */ //LttvProcessState *process = tfs->process; guint cpu = lttv_traceset_get_cpuid_from_event(event); - guint trace_num = 0; /* TODO set right trace number */ + guint trace_num = lttv_traceset_get_trace_index_from_event(event); LttvProcessState *process = ts->running_process[cpu]; guint pid = process->pid; @@ -960,7 +959,7 @@ int before_process_release_hook(void *hook_data, void *call_data) LttTime evtime = lttv_event_get_timestamp(event); - guint trace_num = 0; /* TODO set right trace number */ + guint trace_num = lttv_traceset_get_trace_index_from_event(event); guint pid; { @@ -1062,7 +1061,7 @@ int after_process_fork_hook(void *hook_data, void *call_data) /* It should exist, because we are after the state update. */ g_assert(process_child != NULL); - guint trace_num = 0; /* TODO put right */ + guint trace_num = lttv_traceset_get_trace_index_from_event(event); /* Cannot use current process, because this action is done by the parent * on its child. */ @@ -1156,7 +1155,7 @@ int after_process_exit_hook(void *hook_data, void *call_data) /* Add process to process list (if not present) */ //LttvProcessState *process = tfs->process; guint cpu = lttv_traceset_get_cpuid_from_event(event); - guint trace_num = 0; /* TODO set right trace number */ + guint trace_num = lttv_traceset_get_trace_index_from_event(event); LttvProcessState *process = ts->running_process[cpu]; /* It should exist, because we are after the state update. */ @@ -1308,7 +1307,7 @@ int after_event_enum_process_hook(void *hook_data, void *call_data) HashedProcessData *hashed_process_data_in = NULL; ProcessList *process_list = control_flow_data->process_list; - guint trace_num = 0; /* TODO put right trace number */ + guint trace_num = lttv_traceset_get_trace_index_from_event(event); guint pid_in; { @@ -1773,8 +1772,8 @@ void draw_closure(gpointer key, gpointer value, gpointer user_data) #ifdef EXTRA_CHECK g_assert(lttv_traceset_number(tsc->ts) > 0); #endif //EXTRA_CHECK - //TODO Fdeslauriers 2012-07-17: adapt for multiple traces - LttvTrace *trace = lttv_traceset_get(ts,0); + + LttvTrace *trace = lttv_traceset_get(ts, process_info->trace_num); LttvTraceState *trace_state = trace->state; #if 0