//#include <pango/pango.h>
-#include <ltt/event.h>
-#include <ltt/time.h>
-#include <ltt/trace.h>
-
#include <lttv/lttv.h>
#include <lttv/hook.h>
#include <lttv/state.h>
for(i=0;i<num_traces;i++) {
trace = lttv_traceset_get(ts, i);
- tstate = trace->state;
-
+
if(lttvwindowtraces_get_ready(g_quark_from_string("state"),trace)==FALSE
&& !ts->has_precomputed_states) {
* 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) {
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);
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
//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
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;
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;
/* 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;
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;
{
/* 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. */
*/
int after_process_exit_hook(void *hook_data, void *call_data)
{
-#if 0
+
LttvEvent *event;
event = (LttvEvent *) 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. */
g_assert(process != NULL);
guint pid = process->pid;
- LttTime birth;
- guint pl_height = 0;
+ //LttTime birth;
+ //guint pl_height = 0;
HashedProcessData *hashed_process_data = NULL;
ProcessList *process_list = control_flow_data->process_list;
- birth = process->creation_time;
+ //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];
} else {
hashed_process_data = get_hashed_process_data(control_flow_data,
- process, ppid, trace_num);
+ process, pid, trace_num);
/* Set the current process */
hashed_process_data->x.middle_marked = FALSE;
}
}
-#endif
+
return FALSE;
}
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;
{
#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
#endif
LttTime evtime = lttv_event_get_timestamp(event);
-#ifdef BABEL_CLEANUP
+
ClosureData closure_data;
- closure_data.events_request = events_request;
- closure_data.tss = tss;
+ //TODO ybrosseau 2013-03-27: Fake and event_request.
+ // We need to change the API of drawing_request_expose to ask
+ // For and control flow data only.
+ EventsRequest events_request;
+ events_request.viewer_data = control_flow_data;
+ closure_data.events_request = &events_request;
closure_data.end_time = evtime;
TimeWindow time_window =
gtk_widget_queue_draw(control_flow_data->drawing->drawing_area);
#endif //0
/* Request expose (updates damages zone also) */
- drawing_request_expose(events_request, tss, evtime);
-#endif
+ drawing_request_expose(&events_request, evtime);
+
return 0;
}