X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Feventhooks.c;h=d6c80459d857a9f14e99d0c17687f653ad5a4dff;hb=f4b88a7dd49bfb6b88ea579410d7e4b59faaf73c;hp=9b96e42da2c183c518510c90b7b211aa2ae34d99;hpb=728d0c3ea0f5f236770ac2f330dccada59c59366;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c b/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c index 9b96e42d..d6c80459 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c @@ -435,7 +435,6 @@ int before_schedchange_hook(void *hook_data, void *call_data) if(hashed_process_data == NULL) { g_assert(pid_out == 0 || pid_out != process->ppid); - const gchar *name = g_quark_to_string(process->name); /* Process not present */ ProcessInfo *process_info; Drawing_t *drawing = control_flow_data->drawing; @@ -446,7 +445,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) process->ppid, &birth, tfc->t_context->index, - name, + process->name, &pl_height, &process_info, &hashed_process_data); @@ -591,7 +590,6 @@ int before_schedchange_hook(void *hook_data, void *call_data) if(hashed_process_data == NULL) { g_assert(pid_in == 0 || pid_in != process->ppid); - const gchar *name = g_quark_to_string(process->name); /* Process not present */ ProcessInfo *process_info; Drawing_t *drawing = control_flow_data->drawing; @@ -602,7 +600,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) process->ppid, &birth, tfc->t_context->index, - name, + process->name, &pl_height, &process_info, &hashed_process_data); @@ -1395,7 +1393,6 @@ int after_schedchange_hook(void *hook_data, void *call_data) if(hashed_process_data_in == NULL) { g_assert(pid_in == 0 || pid_in != process_in->ppid); - const gchar *name = g_quark_to_string(process_in->name); ProcessInfo *process_info; Drawing_t *drawing = control_flow_data->drawing; /* Process not present */ @@ -1406,7 +1403,7 @@ int after_schedchange_hook(void *hook_data, void *call_data) process_in->ppid, &birth, tfc->t_context->index, - name, + process_in->name, &pl_height, &process_info, &hashed_process_data_in); @@ -2006,7 +2003,6 @@ int before_execmode_hook(void *hook_data, void *call_data) ProcessInfo *process_info; /* Process not present */ Drawing_t *drawing = control_flow_data->drawing; - const gchar *name = g_quark_to_string(process->name); processlist_add(process_list, drawing, pid, @@ -2014,7 +2010,7 @@ int before_execmode_hook(void *hook_data, void *call_data) process->ppid, &birth, tfc->t_context->index, - name, + process->name, &pl_height, &process_info, &hashed_process_data); @@ -2312,7 +2308,6 @@ int before_process_exit_hook(void *hook_data, void *call_data) g_assert(pid == 0 || pid != process->ppid); /* Process not present */ Drawing_t *drawing = control_flow_data->drawing; - const gchar *name = g_quark_to_string(process->name); ProcessInfo *process_info; processlist_add(process_list, drawing, @@ -2321,7 +2316,7 @@ int before_process_exit_hook(void *hook_data, void *call_data) process->ppid, &birth, tfc->t_context->index, - name, + process->name, &pl_height, &process_info, &hashed_process_data); @@ -2507,7 +2502,6 @@ int before_process_release_hook(void *hook_data, void *call_data) g_assert(pid == 0 || pid != process->ppid); /* Process not present */ Drawing_t *drawing = control_flow_data->drawing; - const gchar *name = g_quark_to_string(process->name); ProcessInfo *process_info; processlist_add(process_list, drawing, @@ -2516,7 +2510,7 @@ int before_process_release_hook(void *hook_data, void *call_data) process->ppid, &birth, tfc->t_context->index, - name, + process->name, &pl_height, &process_info, &hashed_process_data); @@ -2868,7 +2862,6 @@ int before_process_hook(void *hook_data, void *call_data) g_assert(pid == 0 || pid != process->ppid); /* Process not present */ Drawing_t *drawing = control_flow_data->drawing; - const gchar *name = g_quark_to_string(process->name); ProcessInfo *process_info; processlist_add(process_list, drawing, @@ -2877,7 +2870,7 @@ int before_process_hook(void *hook_data, void *call_data) process->ppid, &birth, tfc->t_context->index, - name, + process->name, &pl_height, &process_info, &hashed_process_data); @@ -3063,7 +3056,6 @@ int after_process_fork_hook(void *hook_data, void *call_data) g_assert(child_pid == 0 || child_pid != process_child->ppid); /* Process not present */ Drawing_t *drawing = control_flow_data->drawing; - const gchar *name = g_quark_to_string(process_child->name); ProcessInfo *process_info; processlist_add(process_list, drawing, @@ -3072,7 +3064,7 @@ int after_process_fork_hook(void *hook_data, void *call_data) process_child->ppid, &birth, tfc->t_context->index, - name, + process_child->name, &pl_height, &process_info, &hashed_process_data_child); @@ -3182,7 +3174,6 @@ int after_process_exit_hook(void *hook_data, void *call_data) g_assert(pid == 0 || pid != process->ppid); /* Process not present */ Drawing_t *drawing = control_flow_data->drawing; - const gchar *name = g_quark_to_string(process->name); ProcessInfo *process_info; processlist_add(process_list, drawing, @@ -3191,7 +3182,7 @@ int after_process_exit_hook(void *hook_data, void *call_data) process->ppid, &birth, tfc->t_context->index, - name, + process->name, &pl_height, &process_info, &hashed_process_data); @@ -3447,6 +3438,78 @@ int after_process_hook(void *hook_data, void *call_data) } #endif //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; + + guint cpu = ltt_tracefile_num(tfc->tf); + 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; + HashedProcessData *hashed_process_data = NULL; + ProcessList *process_list = control_flow_data->process_list; + LttTime birth = process->creation_time; + + if(likely(process_list->current_hash_data[cpu] != NULL)) { + hashed_process_data = process_list->current_hash_data[cpu]; + } else { + hashed_process_data = processlist_get_process_data(process_list, + pid, + process->cpu, + &birth, + tfc->t_context->index); + if(unlikely(hashed_process_data == NULL)) + { + g_assert(pid == 0 || pid != process->ppid); + ProcessInfo *process_info; + /* Process not present */ + Drawing_t *drawing = control_flow_data->drawing; + processlist_add(process_list, + drawing, + pid, + process->cpu, + process->ppid, + &birth, + tfc->t_context->index, + process->name, + &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[process->cpu] = + hashed_process_data; + } + + processlist_set_name(process_list, process->name, hashed_process_data); + + return 0; + +} + + + + gint update_time_window_hook(void *hook_data, void *call_data) { ControlFlowData *control_flow_data = (ControlFlowData*) hook_data;