X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fresourceview%2Feventhooks.c;h=cf4f6893d148cd1da8ec842abc4b518a7fb7d893;hb=201fcc156aeee6cf7c1283c0163e47cb209cb78e;hp=892a9ba88510ca2e7a544d553f0a97b551ec6ff9;hpb=8743690d339401db862834d50f9b6bbd1268271f;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/resourceview/eventhooks.c b/ltt/branches/poly/lttv/modules/gui/resourceview/eventhooks.c index 892a9ba8..cf4f6893 100644 --- a/ltt/branches/poly/lttv/modules/gui/resourceview/eventhooks.c +++ b/ltt/branches/poly/lttv/modules/gui/resourceview/eventhooks.c @@ -321,10 +321,7 @@ static void cpu_set_line_color(PropertiesLine *prop_line, LttvCPUState *s) { GQuark present_state = ((GQuark*)s->mode_stack->data)[s->mode_stack->len-1]; - if(present_state == LTTV_CPU_UNKNOWN) { - prop_line->color = drawing_colors_cpu[COL_CPU_UNKNOWN]; - } - else if(present_state == LTTV_CPU_IDLE) { + if(present_state == LTTV_CPU_IDLE) { prop_line->color = drawing_colors_cpu[COL_CPU_IDLE]; } else if(present_state == LTTV_CPU_BUSY) { @@ -335,6 +332,8 @@ static void cpu_set_line_color(PropertiesLine *prop_line, LttvCPUState *s) } else if(present_state == LTTV_CPU_TRAP) { prop_line->color = drawing_colors_cpu[COL_CPU_TRAP]; + } else { + prop_line->color = drawing_colors_cpu[COL_CPU_UNKNOWN]; } } @@ -372,14 +371,6 @@ static void irq_set_line_color(PropertiesLine *prop_line, LttvIRQState *s) int before_schedchange_hook(void *hook_data, void *call_data) -{ - before_schedchange_hook_cpu(hook_data, call_data); -// before_schedchange_hook_irq(hook_data, call_data); - - return 0; -} - -int before_schedchange_hook_cpu(void *hook_data, void *call_data) { LttvTraceHookByFacility *thf = (LttvTraceHookByFacility*)hook_data; EventsRequest *events_request = (EventsRequest*)thf->hook_data; @@ -1335,939 +1326,6 @@ int before_execmode_hook_irq(void *hook_data, void *call_data) return 0; } -/* before_process_exit_hook - * - * Draw lines for process event. - * - * @param hook_data ControlFlowData structure of the viewer. - * @param call_data Event context. - * - * This function adds items to be drawn in a queue for each process. - * - */ - -//int before_process_exit_hook(void *hook_data, void *call_data) -//{ -// LttvTraceHookByFacility *thf = (LttvTraceHookByFacility*)hook_data; -// EventsRequest *events_request = (EventsRequest*)thf->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); -// -// /* Add process to process list (if not present) */ -// //LttvProcessState *process = tfs->process; -// guint cpu = tfs->cpu; -// guint trace_num = ts->parent.index; -// LttvProcessState *process = ts->running_process[cpu]; -// guint pid = process->pid; -// LttTime birth; -// guint pl_height = 0; -// HashedResourceData *hashed_process_data = NULL; -// -// ProcessList *process_list = control_flow_data->process_list; -// -// g_assert(process != NULL); -// -// 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 = processlist_get_process_data(process_list, "CPU0"); -//// hashed_process_data = processlist_get_process_data(process_list, -//// pid, -//// process->cpu, -//// &birth, -//// trace_num); -// if(unlikely(hashed_process_data == NULL)) -// { -// g_assert(pid == 0 || pid != process->ppid); -// /* Process not present */ -// Drawing_t *drawing = control_flow_data->drawing; -// ResourceInfo *process_info; -// processlist_add(process_list, -// drawing, -// pid, -// process->tgid, -// process->cpu, -// process->ppid, -// &birth, -// trace_num, -// process->name, -// process->brand, -// &pl_height, -// &process_info, -// &hashed_process_data); -// gtk_widget_set_size_request(drawing->drawing_area, -// -1, -// pl_height); -// 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(likely(ltt_time_compare(hashed_process_data->next_good_time, -// evtime) > 0)) -// { -// if(unlikely(hashed_process_data->x.middle_marked == FALSE)) { -// TimeWindow time_window = -// lttvwindow_get_time_window(control_flow_data->tab); -// -//#ifdef EXTRA_CHECK -// if(ltt_time_compare(evtime, time_window.start_time) == -1 -// || ltt_time_compare(evtime, time_window.end_time) == 1) -// return; -//#endif //EXTRA_CHECK -// Drawing_t *drawing = control_flow_data->drawing; -// guint width = drawing->width; -// guint x; -// convert_time_to_pixels( -// time_window, -// evtime, -// width, -// &x); -// -// /* Draw collision indicator */ -// gdk_gc_set_foreground(drawing->gc, &drawing_colors[COL_WHITE]); -// gdk_draw_point(hashed_process_data->pixmap, -// drawing->gc, -// x, -// COLLISION_POSITION(hashed_process_data->height)); -// hashed_process_data->x.middle_marked = TRUE; -// } -// } else { -// TimeWindow time_window = -// lttvwindow_get_time_window(control_flow_data->tab); -// -//#ifdef EXTRA_CHECK -// if(ltt_time_compare(evtime, time_window.start_time) == -1 -// || ltt_time_compare(evtime, time_window.end_time) == 1) -// return; -//#endif //EXTRA_CHECK -// Drawing_t *drawing = control_flow_data->drawing; -// guint width = drawing->width; -// guint x; -// -// convert_time_to_pixels( -// time_window, -// evtime, -// width, -// &x); -// -// -// /* Jump over draw if we are at the same x position */ -// if(unlikely(x == hashed_process_data->x.middle && -// hashed_process_data->x.middle_used)) -// { -// if(unlikely(hashed_process_data->x.middle_marked == FALSE)) { -// /* Draw collision indicator */ -// gdk_gc_set_foreground(drawing->gc, &drawing_colors[COL_WHITE]); -// gdk_draw_point(hashed_process_data->pixmap, -// drawing->gc, -// x, -// COLLISION_POSITION(hashed_process_data->height)); -// hashed_process_data->x.middle_marked = TRUE; -// } -// /* jump */ -// } else { -// DrawContext draw_context; -// -// /* Now create the drawing context that will be used to draw -// * items related to the last state. */ -// draw_context.drawable = hashed_process_data->pixmap; -// draw_context.gc = drawing->gc; -// draw_context.pango_layout = drawing->pango_layout; -// draw_context.drawinfo.start.x = hashed_process_data->x.middle; -// draw_context.drawinfo.end.x = x; -// -// draw_context.drawinfo.y.over = 1; -// draw_context.drawinfo.y.middle = (hashed_process_data->height/2); -// draw_context.drawinfo.y.under = hashed_process_data->height; -// -// draw_context.drawinfo.start.offset.over = 0; -// draw_context.drawinfo.start.offset.middle = 0; -// draw_context.drawinfo.start.offset.under = 0; -// draw_context.drawinfo.end.offset.over = 0; -// draw_context.drawinfo.end.offset.middle = 0; -// draw_context.drawinfo.end.offset.under = 0; -// -// { -// /* Draw the line */ -// PropertiesLine prop_line = prepare_s_e_line(process); -// draw_line((void*)&prop_line, (void*)&draw_context); -// -// } -// /* become the last x position */ -// hashed_process_data->x.middle = x; -// hashed_process_data->x.middle_used = TRUE; -// hashed_process_data->x.middle_marked = FALSE; -// -// /* Calculate the next good time */ -// convert_pixels_to_time(width, x+1, time_window, -// &hashed_process_data->next_good_time); -// } -// } -// -// return 0; -// -//} - - -/* before_process_release_hook - * - * Draw lines for process event. - * - * @param hook_data ControlFlowData structure of the viewer. - * @param call_data Event context. - * - * This function adds items to be drawn in a queue for each process. - * - */ - -//int before_process_release_hook(void *hook_data, void *call_data) -//{ -// LttvTraceHookByFacility *thf = (LttvTraceHookByFacility*)hook_data; -// EventsRequest *events_request = (EventsRequest*)thf->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); -// -// guint trace_num = ts->parent.index; -// -// guint pid; -// { -// pid = ltt_event_get_long_unsigned(e, thf->f1); -// } -// -// /* Add process to process list (if not present) */ -// /* Don't care about the process if it's not in the state hash already : -// * that means a process that has never done anything in the trace and -// * unknown suddently gets destroyed : no state meaningful to show. */ -// LttvProcessState *process = lttv_state_find_process(ts, ANY_CPU, pid); -// -// if(process != NULL) { -// LttTime birth; -// guint pl_height = 0; -// HashedResourceData *hashed_process_data = NULL; -// -// ProcessList *process_list = control_flow_data->process_list; -// -// birth = process->creation_time; -// -// /* Cannot use current process : this event happens on another process, -// * action done by the parent. */ -// hashed_process_data = processlist_get_process_data(process_list, "CPU0"); -//// hashed_process_data = processlist_get_process_data(process_list, -//// pid, -//// process->cpu, -//// &birth, -//// trace_num); -// if(unlikely(hashed_process_data == NULL)) -// { -// g_assert(pid == 0 || pid != process->ppid); -// /* Process not present */ -// Drawing_t *drawing = control_flow_data->drawing; -// ResourceInfo *process_info; -// processlist_add(process_list, -// drawing, -// pid, -// process->tgid, -// process->cpu, -// process->ppid, -// &birth, -// trace_num, -// process->name, -// process->brand, -// &pl_height, -// &process_info, -// &hashed_process_data); -// gtk_widget_set_size_request(drawing->drawing_area, -// -1, -// pl_height); -// 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(likely(ltt_time_compare(hashed_process_data->next_good_time, -// evtime) > 0)) -// { -// if(unlikely(hashed_process_data->x.middle_marked == FALSE)) { -// TimeWindow time_window = -// lttvwindow_get_time_window(control_flow_data->tab); -// -//#ifdef EXTRA_CHECK -// if(ltt_time_compare(evtime, time_window.start_time) == -1 -// || ltt_time_compare(evtime, time_window.end_time) == 1) -// return; -//#endif //EXTRA_CHECK -// Drawing_t *drawing = control_flow_data->drawing; -// guint width = drawing->width; -// guint x; -// convert_time_to_pixels( -// time_window, -// evtime, -// width, -// &x); -// -// /* Draw collision indicator */ -// gdk_gc_set_foreground(drawing->gc, &drawing_colors[COL_WHITE]); -// gdk_draw_point(hashed_process_data->pixmap, -// drawing->gc, -// x, -// COLLISION_POSITION(hashed_process_data->height)); -// hashed_process_data->x.middle_marked = TRUE; -// } -// } else { -// TimeWindow time_window = -// lttvwindow_get_time_window(control_flow_data->tab); -// -//#ifdef EXTRA_CHECK -// if(ltt_time_compare(evtime, time_window.start_time) == -1 -// || ltt_time_compare(evtime, time_window.end_time) == 1) -// return; -//#endif //EXTRA_CHECK -// Drawing_t *drawing = control_flow_data->drawing; -// guint width = drawing->width; -// guint x; -// -// convert_time_to_pixels( -// time_window, -// evtime, -// width, -// &x); -// -// -// /* Jump over draw if we are at the same x position */ -// if(unlikely(x == hashed_process_data->x.middle && -// hashed_process_data->x.middle_used)) -// { -// if(unlikely(hashed_process_data->x.middle_marked == FALSE)) { -// /* Draw collision indicator */ -// gdk_gc_set_foreground(drawing->gc, &drawing_colors[COL_WHITE]); -// gdk_draw_point(hashed_process_data->pixmap, -// drawing->gc, -// x, -// COLLISION_POSITION(hashed_process_data->height)); -// hashed_process_data->x.middle_marked = TRUE; -// } -// /* jump */ -// } else { -// DrawContext draw_context; -// -// /* Now create the drawing context that will be used to draw -// * items related to the last state. */ -// draw_context.drawable = hashed_process_data->pixmap; -// draw_context.gc = drawing->gc; -// draw_context.pango_layout = drawing->pango_layout; -// draw_context.drawinfo.start.x = hashed_process_data->x.middle; -// draw_context.drawinfo.end.x = x; -// -// draw_context.drawinfo.y.over = 1; -// draw_context.drawinfo.y.middle = (hashed_process_data->height/2); -// draw_context.drawinfo.y.under = hashed_process_data->height; -// -// draw_context.drawinfo.start.offset.over = 0; -// draw_context.drawinfo.start.offset.middle = 0; -// draw_context.drawinfo.start.offset.under = 0; -// draw_context.drawinfo.end.offset.over = 0; -// draw_context.drawinfo.end.offset.middle = 0; -// draw_context.drawinfo.end.offset.under = 0; -// -// { -// /* Draw the line */ -// PropertiesLine prop_line = prepare_s_e_line(process); -// draw_line((void*)&prop_line, (void*)&draw_context); -// -// } -// /* become the last x position */ -// hashed_process_data->x.middle = x; -// hashed_process_data->x.middle_used = TRUE; -// hashed_process_data->x.middle_marked = FALSE; -// -// /* Calculate the next good time */ -// convert_pixels_to_time(width, x+1, time_window, -// &hashed_process_data->next_good_time); -// } -// } -// } -// -// return 0; -//} - -/* after_process_fork_hook - * - * Create the processlist entry for the child process. Put the last - * position in x at the current time value. - * - * @param hook_data ControlFlowData structure of the viewer. - * @param call_data Event context. - * - * This function adds items to be drawn in a queue for each process. - * - */ -//int after_process_fork_hook(void *hook_data, void *call_data) -//{ -// LttvTraceHookByFacility *thf = (LttvTraceHookByFacility*)hook_data; -// EventsRequest *events_request = (EventsRequest*)thf->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); -// -// guint child_pid; -// { -// child_pid = ltt_event_get_long_unsigned(e, thf->f2); -// } -// -// /* Add process to process list (if not present) */ -// LttvProcessState *process_child; -// LttTime birth; -// guint pl_height = 0; -// HashedResourceData *hashed_process_data_child = NULL; -// -// ProcessList *process_list = control_flow_data->process_list; -// -// /* Find child in the list... */ -// process_child = lttv_state_find_process(ts, ANY_CPU, child_pid); -// /* It should exist, because we are after the state update. */ -// g_assert(process_child != NULL); -// -// birth = process_child->creation_time; -// guint trace_num = ts->parent.index; -// -// /* Cannot use current process, because this action is done by the parent -// * on its child. */ -// hashed_process_data_child = processlist_get_process_data(process_list, "CPU0"); -//// hashed_process_data_child = processlist_get_process_data(process_list, -//// child_pid, -//// process_child->cpu, -//// &birth, -//// trace_num); -// if(likely(hashed_process_data_child == NULL)) -// { -// g_assert(child_pid == 0 || child_pid != process_child->ppid); -// /* Process not present */ -// Drawing_t *drawing = control_flow_data->drawing; -// ResourceInfo *process_info; -// processlist_add(process_list, -// drawing, -// child_pid, -// process_child->tgid, -// process_child->cpu, -// process_child->ppid, -// &birth, -// trace_num, -// process_child->name, -// process_child->brand, -// &pl_height, -// &process_info, -// &hashed_process_data_child); -// gtk_widget_set_size_request(drawing->drawing_area, -// -1, -// pl_height); -// gtk_widget_queue_draw(drawing->drawing_area); -// } else { -// processlist_set_ppid(process_list, process_child->ppid, -// hashed_process_data_child); -// processlist_set_tgid(process_list, process_child->tgid, -// hashed_process_data_child); -// } -// -// -// if(likely(ltt_time_compare(hashed_process_data_child->next_good_time, -// evtime) <= 0)) -// { -// TimeWindow time_window = -// lttvwindow_get_time_window(control_flow_data->tab); -// -//#ifdef EXTRA_CHECK -// if(ltt_time_compare(evtime, time_window.start_time) == -1 -// || ltt_time_compare(evtime, time_window.end_time) == 1) -// return; -//#endif //EXTRA_CHECK -// Drawing_t *drawing = control_flow_data->drawing; -// guint width = drawing->width; -// guint new_x; -// convert_time_to_pixels( -// time_window, -// evtime, -// width, -// &new_x); -// -// if(likely(hashed_process_data_child->x.over != new_x)) { -// hashed_process_data_child->x.over = new_x; -// hashed_process_data_child->x.over_used = FALSE; -// hashed_process_data_child->x.over_marked = FALSE; -// } -// if(likely(hashed_process_data_child->x.middle != new_x)) { -// hashed_process_data_child->x.middle = new_x; -// hashed_process_data_child->x.middle_used = FALSE; -// hashed_process_data_child->x.middle_marked = FALSE; -// } -// if(likely(hashed_process_data_child->x.under != new_x)) { -// hashed_process_data_child->x.under = new_x; -// hashed_process_data_child->x.under_used = FALSE; -// hashed_process_data_child->x.under_marked = FALSE; -// } -// } -// return 0; -//} - - - -/* after_process_exit_hook - * - * Create the processlist entry for the child process. Put the last - * position in x at the current time value. - * - * @param hook_data ControlFlowData structure of the viewer. - * @param call_data Event context. - * - * This function adds items to be drawn in a queue for each process. - * - */ -//int after_process_exit_hook(void *hook_data, void *call_data) -//{ -// LttvTraceHookByFacility *thf = (LttvTraceHookByFacility*)hook_data; -// EventsRequest *events_request = (EventsRequest*)thf->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); -// -// /* Add process to process list (if not present) */ -// //LttvProcessState *process = tfs->process; -// guint cpu = tfs->cpu; -// guint trace_num = ts->parent.index; -// 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; -// HashedResourceData *hashed_process_data = NULL; -// -// ProcessList *process_list = control_flow_data->process_list; -// -// 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 = processlist_get_process_data(process_list, "CPU0"); -//// hashed_process_data = processlist_get_process_data(process_list, -//// pid, -//// process->cpu, -//// &birth, -//// trace_num); -// if(unlikely(hashed_process_data == NULL)) -// { -// g_assert(pid == 0 || pid != process->ppid); -// /* Process not present */ -// Drawing_t *drawing = control_flow_data->drawing; -// ResourceInfo *process_info; -// processlist_add(process_list, -// drawing, -// pid, -// process->tgid, -// process->cpu, -// process->ppid, -// &birth, -// trace_num, -// process->name, -// process->brand, -// &pl_height, -// &process_info, -// &hashed_process_data); -// gtk_widget_set_size_request(drawing->drawing_area, -// -1, -// pl_height); -// gtk_widget_queue_draw(drawing->drawing_area); -// } -// -// /* Set the current process */ -// process_list->current_hash_data[trace_num][process->cpu] = -// hashed_process_data; -// } -// -// if(unlikely(ltt_time_compare(hashed_process_data->next_good_time, -// evtime) <= 0)) -// { -// TimeWindow time_window = -// lttvwindow_get_time_window(control_flow_data->tab); -// -//#ifdef EXTRA_CHECK -// if(ltt_time_compare(evtime, time_window.start_time) == -1 -// || ltt_time_compare(evtime, time_window.end_time) == 1) -// return; -//#endif //EXTRA_CHECK -// Drawing_t *drawing = control_flow_data->drawing; -// guint width = drawing->width; -// guint new_x; -// convert_time_to_pixels( -// time_window, -// evtime, -// width, -// &new_x); -// if(unlikely(hashed_process_data->x.middle != new_x)) { -// hashed_process_data->x.middle = new_x; -// hashed_process_data->x.middle_used = FALSE; -// hashed_process_data->x.middle_marked = FALSE; -// } -// } -// -// return 0; -//} - - -/* Get the filename of the process to print */ -//int after_fs_exec_hook(void *hook_data, void *call_data) -//{ -// LttvTraceHookByFacility *thf = (LttvTraceHookByFacility*)hook_data; -// EventsRequest *events_request = (EventsRequest*)thf->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; -// -// guint cpu = tfs->cpu; -// guint trace_num = ts->parent.index; -// LttvProcessState *process = ts->running_process[cpu]; -// g_assert(process != NULL); -// -// guint pid = process->pid; -// -// /* Well, the process_out existed : we must get it in the process hash -// * or add it, and draw its items. -// */ -// /* Add process to process list (if not present) */ -// guint pl_height = 0; -// HashedResourceData *hashed_process_data = NULL; -// ProcessList *process_list = control_flow_data->process_list; -// 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]; -// } else { -// hashed_process_data = processlist_get_process_data(process_list, "CPU0"); -//// hashed_process_data = processlist_get_process_data(process_list, -//// pid, -//// process->cpu, -//// &birth, -//// trace_num); -// if(unlikely(hashed_process_data == NULL)) -// { -// g_assert(pid == 0 || pid != process->ppid); -// ResourceInfo *process_info; -// /* Process not present */ -// Drawing_t *drawing = control_flow_data->drawing; -// processlist_add(process_list, -// drawing, -// pid, -// process->tgid, -// process->cpu, -// process->ppid, -// &birth, -// trace_num, -// process->name, -// process->brand, -// &pl_height, -// &process_info, -// &hashed_process_data); -// gtk_widget_set_size_request(drawing->drawing_area, -// -1, -// pl_height); -// gtk_widget_queue_draw(drawing->drawing_area); -// } -// /* Set the current process */ -// process_list->current_hash_data[trace_num][process->cpu] = -// hashed_process_data; -// } -// -// processlist_set_name(process_list, process->name, hashed_process_data); -// -// return 0; -// -//} - -/* Get the filename of the process to print */ -//int after_user_generic_thread_brand_hook(void *hook_data, void *call_data) -//{ -// LttvTraceHookByFacility *thf = (LttvTraceHookByFacility*)hook_data; -// EventsRequest *events_request = (EventsRequest*)thf->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; -// -// guint cpu = tfs->cpu; -// guint trace_num = ts->parent.index; -// LttvProcessState *process = ts->running_process[cpu]; -// g_assert(process != NULL); -// -// guint pid = process->pid; -// -// /* Well, the process_out existed : we must get it in the process hash -// * or add it, and draw its items. -// */ -// /* Add process to process list (if not present) */ -// guint pl_height = 0; -// HashedResourceData *hashed_process_data = NULL; -// ProcessList *process_list = control_flow_data->process_list; -// 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]; -// } else { -// hashed_process_data = processlist_get_process_data(process_list, "CPU0"); -//// hashed_process_data = processlist_get_process_data(process_list, -//// pid, -//// process->cpu, -//// &birth, -//// trace_num); -// if(unlikely(hashed_process_data == NULL)) -// { -// g_assert(pid == 0 || pid != process->ppid); -// ResourceInfo *process_info; -// /* Process not present */ -// Drawing_t *drawing = control_flow_data->drawing; -// processlist_add(process_list, -// drawing, -// pid, -// process->tgid, -// process->cpu, -// process->ppid, -// &birth, -// trace_num, -// process->name, -// process->brand, -// &pl_height, -// &process_info, -// &hashed_process_data); -// gtk_widget_set_size_request(drawing->drawing_area, -// -1, -// pl_height); -// gtk_widget_queue_draw(drawing->drawing_area); -// } -// /* Set the current process */ -// process_list->current_hash_data[trace_num][process->cpu] = -// hashed_process_data; -// } -// -// processlist_set_brand(process_list, process->brand, hashed_process_data); -// -// return 0; -// -//} - - -/* after_event_enum_process_hook - * - * Create the processlist entry for the child process. Put the last - * position in x at the current time value. - * - * @param hook_data ControlFlowData structure of the viewer. - * @param call_data Event context. - * - * This function adds items to be drawn in a queue for each process. - * - */ -//int after_event_enum_process_hook(void *hook_data, void *call_data) -//{ -// LttvTraceHookByFacility *thf = (LttvTraceHookByFacility*)hook_data; -// EventsRequest *events_request = (EventsRequest*)thf->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; -// -// guint first_cpu, nb_cpus, cpu; -// -// 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); -// -// /* Add process to process list (if not present) */ -// LttvProcessState *process_in; -// LttTime birth; -// guint pl_height = 0; -// HashedResourceData *hashed_process_data_in = NULL; -// -// ProcessList *process_list = control_flow_data->process_list; -// guint trace_num = ts->parent.index; -// -// guint pid_in; -// { -// pid_in = ltt_event_get_long_unsigned(e, thf->f1); -// } -// -// if(pid_in == 0) { -// first_cpu = 0; -// nb_cpus = ltt_trace_get_num_cpu(ts->parent.t); -// } else { -// first_cpu = ANY_CPU; -// nb_cpus = ANY_CPU+1; -// } -// -// for(cpu = first_cpu; cpu < nb_cpus; cpu++) { -// /* Find process pid_in in the list... */ -// process_in = lttv_state_find_process(ts, cpu, pid_in); -// //process_in = tfs->process; -// //guint cpu = tfs->cpu; -// //guint trace_num = ts->parent.index; -// //process_in = ts->running_process[cpu]; -// /* It should exist, because we are after the state update. */ -// #ifdef EXTRA_CHECK -// //g_assert(process_in != NULL); -// #endif //EXTRA_CHECK -// birth = process_in->creation_time; -// -// hashed_process_data_in = processlist_get_process_data(process_list, "CPU0"); -//// hashed_process_data_in = processlist_get_process_data(process_list, -//// pid_in, -//// process_in->cpu, -//// &birth, -//// trace_num); -// if(hashed_process_data_in == NULL) -// { -// if(pid_in != 0 && pid_in == process_in->ppid) -// g_critical("TEST %u , %u", pid_in, process_in->ppid); -// g_assert(pid_in == 0 || pid_in != process_in->ppid); -// ResourceInfo *process_info; -// Drawing_t *drawing = control_flow_data->drawing; -// /* Process not present */ -// processlist_add(process_list, -// drawing, -// pid_in, -// process_in->tgid, -// process_in->cpu, -// process_in->ppid, -// &birth, -// trace_num, -// process_in->name, -// process_in->brand, -// &pl_height, -// &process_info, -// &hashed_process_data_in); -// gtk_widget_set_size_request(drawing->drawing_area, -// -1, -// pl_height); -// gtk_widget_queue_draw(drawing->drawing_area); -// } else { -// processlist_set_name(process_list, process_in->name, -// hashed_process_data_in); -// processlist_set_ppid(process_list, process_in->ppid, -// hashed_process_data_in); -// processlist_set_tgid(process_list, process_in->tgid, -// hashed_process_data_in); -// } -// } -// return 0; -//} - - gint update_time_window_hook(void *hook_data, void *call_data) { ControlFlowData *control_flow_data = (ControlFlowData*) hook_data;