#include <ltt/trace.h>
#include <lttv/lttv.h>
+#ifdef BABEL_CLEANUP
#include <lttv/tracecontext.h>
+#endif //babel_cleanup
#include <lttvwindow/lttvwindow.h>
#include <lttv/state.h>
#include <lttv/hook.h>
Tab *tab = drawing->control_flow_data->tab;
- TimeWindow time_window =
- lttvwindow_get_time_window(tab);
+ TimeWindow time_window = lttvwindow_get_time_window(tab);
+ LttvTraceset *traceset = lttvwindow_get_traceset(tab);
+ if(lttv_traceset_number(traceset) <= 0){
+ return;
+ }
ControlFlowData *control_flow_data = drawing->control_flow_data;
// (ControlFlowData*)g_object_get_data(
control_flow_data);
{
- /* find the tracehooks */
- LttvTracesetContext *tsc = lttvwindow_get_traceset_context(tab);
-
- LttvTraceset *traceset = tsc->ts;
-
- guint i, k, l, nb_trace;
-
+ LttvHooks *event_hook;
+//TODO "fdeslauriers : Is it the right way to get the hooks - july 11 2012"
+ event_hook = lttv_traceset_get_hooks(traceset);
+ g_assert(event_hook);
+
+ lttv_hooks_add(event_hook,before_execmode_hook , control_flow_data, LTTV_PRIO_STATE);
+ #ifdef BABEL_CLEANUP
+ lttv_hooks_add(event_hook,syscall_exit , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,irq_entry , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,irq_exit , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,soft_irq_raise , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,soft_irq_entry , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,soft_irq_exit , control_flow_data, LTTV_PRIO_STATE);
+#endif //babel_cleanup
+ lttv_hooks_add(event_hook,before_schedchange_hook , control_flow_data, LTTV_PRIO_STATE);
+#ifdef BABEL_CLEANUP
+ lttv_hooks_add(event_hook,sched_try_wakeup , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,process_exit , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,process_free , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,process_exec , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,enum_process_state , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,statedump_end , control_flow_data, LTTV_PRIO_STATE);
+ lttv_hooks_add(event_hook,enum_interrupt , control_flow_data, LTTV_PRIO_STATE);
+#endif //babel_cleanup
+
+
+ guint i, k, nb_trace;
LttvTraceState *ts;
-
- LttvTracefileState *tfs;
-
GArray *hooks;
-
- LttvTraceHook *th;
-
- guint ret;
gint first_after;
nb_trace = lttv_traceset_number(traceset);
EventsRequest *events_request = g_new(EventsRequest, 1);
// Create the hooks
//LttvHooks *event = lttv_hooks_new();
- LttvHooksByIdChannelArray *event_by_id_channel =
- lttv_hooks_by_id_channel_new();
+
LttvHooks *before_chunk_traceset = lttv_hooks_new();
LttvHooks *after_chunk_traceset = lttv_hooks_new();
LttvHooks *before_request_hook = lttv_hooks_new();
events_request,
LTTV_PRIO_DEFAULT);
-
+#ifdef BABEL_CLEANUP
ts = (LttvTraceState *)tsc->traces[i];
/* Find the eventtype id for the following events and register the
}
events_request->hooks = hooks;
-
+#endif //babel_cleanup
// Fill the events request
events_request->owner = control_flow_data;
events_request->viewer_data = control_flow_data;
events_request->before_chunk_traceset = before_chunk_traceset;
events_request->before_chunk_trace = NULL;
events_request->before_chunk_tracefile = NULL;
- events_request->event = NULL;
- events_request->event_by_id_channel = event_by_id_channel;
+ events_request->event = event_hook;
events_request->after_chunk_tracefile = NULL;
events_request->after_chunk_trace = NULL;
events_request->after_chunk_traceset = after_chunk_traceset;
lttvwindow_events_request(tab, events_request);
}
- }
+
+
+}
}
static void set_last_start(gpointer key, gpointer value, gpointer user_data)
{
- ProcessInfo *process_info = (ProcessInfo*)key;
HashedProcessData *hashed_process_data = (HashedProcessData*)value;
guint x = GPOINTER_TO_UINT(user_data);
return;
}
-
-void drawing_data_request_begin(EventsRequest *events_request, LttvTracesetState *tss)
+void drawing_data_request_begin(EventsRequest *events_request)
{
g_debug("Begin of data request");
ControlFlowData *cfd = events_request->viewer_data;
- LttvTracesetContext *tsc = LTTV_TRACESET_CONTEXT(tss);
TimeWindow time_window =
lttvwindow_get_time_window(cfd->tab);
GUINT_TO_POINTER(x));
}
-
-void drawing_chunk_begin(EventsRequest *events_request, LttvTracesetState *tss)
+void drawing_chunk_begin(EventsRequest *events_request, LttvTraceset *ts)
{
g_debug("Begin of chunk");
ControlFlowData *cfd = events_request->viewer_data;
- LttvTracesetContext *tsc = &tss->parent.parent;
//LttTime current_time = lttv_traceset_context_get_current_tfc(tsc)->timestamp;
guint i;
- LttvTraceset *traceset = tsc->ts;
- guint nb_trace = lttv_traceset_number(traceset);
+ guint nb_trace = lttv_traceset_number(ts);
if(!cfd->process_list->current_hash_data) {
cfd->process_list->current_hash_data = g_new(HashedProcessData**,nb_trace);
for(i = 0 ; i < nb_trace ; i++) {
- guint num_cpu = ltt_trace_get_num_cpu(tss->parent.traces[i]->t);
+ guint num_cpu = lttv_trace_get_num_cpu( lttv_traceset_get(ts, i));
cfd->process_list->current_hash_data[i] = g_new(HashedProcessData*,num_cpu);
memset(cfd->process_list->current_hash_data[i], 0,
sizeof(HashedProcessData*)*num_cpu);
void drawing_request_expose(EventsRequest *events_request,
- LttvTracesetState *tss,
LttTime end_time)
{
gint x, width;
guint x_end;
ControlFlowData *cfd = events_request->viewer_data;
- LttvTracesetContext *tsc = (LttvTracesetContext*)tss;
Drawing_t *drawing = cfd->drawing;
- TimeWindow time_window =
- lttvwindow_get_time_window(cfd->tab);
+ TimeWindow time_window = lttvwindow_get_time_window(cfd->tab);
g_debug("request expose");
TRUE);
}
-
/* Callbacks */
drawing->alloc_width);
update_index_to_pixmap(drawing->control_flow_data->process_list);
}
- //drawing->height = widget->allocation.height;
+ drawing->height = widget->allocation.height;
//ProcessList_get_height
// (GuiControlFlow_get_process_list(drawing->control_flow_data)),
void drawing_update_ruler(Drawing_t *drawing, TimeWindow *time_window)
{
- GtkRequisition req;
- GdkRectangle rect;
-
- req.width = drawing->ruler->allocation.width;
- req.height = drawing->ruler->allocation.height;
-
-
- rect.x = 0;
- rect.y = 0;
- rect.width = req.width;
- rect.height = req.height;
-
gtk_widget_queue_draw(drawing->ruler);
- //gtk_widget_draw( drawing->ruler, &rect);
}
/* Redraw the ruler */