From 7b5f6cf19fe5b312dc0c5712b0fceddeed2fe11f Mon Sep 17 00:00:00 2001 From: compudj Date: Mon, 12 Jun 2006 14:52:15 +0000 Subject: [PATCH] thread brand git-svn-id: http://ltt.polymtl.ca/svn@1918 04897980-b3bd-0310-b5e0-8ef037075253 --- ltt/branches/poly/lttv/lttv/filter.c | 18 ++++- ltt/branches/poly/lttv/lttv/filter.h | 1 + ltt/branches/poly/lttv/lttv/print.c | 3 +- ltt/branches/poly/lttv/lttv/state.c | 42 ++++++++-- ltt/branches/poly/lttv/lttv/state.h | 5 +- .../lttv/modules/gui/controlflow/drawing.c | 10 ++- .../lttv/modules/gui/controlflow/eventhooks.c | 81 +++++++++++++++++++ .../lttv/modules/gui/controlflow/eventhooks.h | 1 + .../modules/gui/controlflow/processlist.c | 23 +++++- .../modules/gui/controlflow/processlist.h | 7 +- .../poly/lttv/modules/gui/filter/filter.c | 1 + .../poly/lttv/modules/text/textFilter.c | 13 +-- 12 files changed, 185 insertions(+), 20 deletions(-) diff --git a/ltt/branches/poly/lttv/lttv/filter.c b/ltt/branches/poly/lttv/lttv/filter.c index 78882d69..6337cd2c 100644 --- a/ltt/branches/poly/lttv/lttv/filter.c +++ b/ltt/branches/poly/lttv/lttv/filter.c @@ -52,6 +52,7 @@ * |->creation_time (LttTime) * |->insertion_time (LttTime) * |->process_name (String, converted to GQuark) + * |->thread_brand (String, converted to GQuark) * |->execution_mode (LttvExecutionMode) * |->execution_submode (LttvExecutionSubmode) * |->process_status (LttvProcessStatus) @@ -164,6 +165,7 @@ lttv_simple_expression_assign_field(GPtrArray* fp, LttvSimpleExpression* se) { * state.creation_time * state.insertion_time * state.process_name + * state.thread_brand * state.execution_mode * state.execution_submode * state.process_status @@ -186,6 +188,9 @@ lttv_simple_expression_assign_field(GPtrArray* fp, LttvSimpleExpression* se) { else if(!g_strcasecmp(f->str,"process_name") ) { se->field = LTTV_FILTER_STATE_P_NAME; } + else if(!g_strcasecmp(f->str,"thread_brand") ) { + se->field = LTTV_FILTER_STATE_T_BRAND; + } else if(!g_strcasecmp(f->str,"execution_mode") ) { se->field = LTTV_FILTER_STATE_EX_MODE; } @@ -276,6 +281,7 @@ lttv_simple_expression_assign_operator(LttvSimpleExpression* se, LttvExpressionO case LTTV_FILTER_TRACE_NAME: case LTTV_FILTER_TRACEFILE_NAME: case LTTV_FILTER_STATE_P_NAME: + case LTTV_FILTER_STATE_T_BRAND: case LTTV_FILTER_EVENT_NAME: case LTTV_FILTER_EVENT_FACILITY: case LTTV_FILTER_STATE_EX_MODE: @@ -436,6 +442,7 @@ lttv_simple_expression_assign_value(LttvSimpleExpression* se, char* value) { case LTTV_FILTER_TRACE_NAME: case LTTV_FILTER_TRACEFILE_NAME: case LTTV_FILTER_STATE_P_NAME: + case LTTV_FILTER_STATE_T_BRAND: case LTTV_FILTER_EVENT_NAME: case LTTV_FILTER_EVENT_FACILITY: case LTTV_FILTER_STATE_EX_MODE: @@ -548,6 +555,7 @@ lttv_struct_type(gint ft) { case LTTV_FILTER_STATE_CT: case LTTV_FILTER_STATE_IT: case LTTV_FILTER_STATE_P_NAME: + case LTTV_FILTER_STATE_T_BRAND: case LTTV_FILTER_STATE_EX_MODE: case LTTV_FILTER_STATE_EX_SUBMODE: case LTTV_FILTER_STATE_P_STATUS: @@ -1936,15 +1944,19 @@ lttv_filter_tree_parse_branch( } break; case LTTV_FILTER_STATE_P_NAME: - /* - * All 'unnamed' for the moment - */ if(state == NULL) return TRUE; else { GQuark quark = state->name; return se->op((gpointer)&quark,v); } break; + case LTTV_FILTER_STATE_T_BRAND: + if(state == NULL) return TRUE; + else { + GQuark quark = state->brand; + return se->op((gpointer)&quark,v); + } + break; case LTTV_FILTER_STATE_EX_MODE: if(state == NULL) return TRUE; else return se->op((gpointer)&state->state->t,v); diff --git a/ltt/branches/poly/lttv/lttv/filter.h b/ltt/branches/poly/lttv/lttv/filter.h index d93a1551..cc25dfb1 100644 --- a/ltt/branches/poly/lttv/lttv/filter.h +++ b/ltt/branches/poly/lttv/lttv/filter.h @@ -104,6 +104,7 @@ enum _LttvFieldType { LTTV_FILTER_STATE_CT, /**< state.creation_time (double) */ LTTV_FILTER_STATE_IT, /**< state.insertion_time (double) */ LTTV_FILTER_STATE_P_NAME, /**< state.process_name (char*) */ + LTTV_FILTER_STATE_T_BRAND, /**< state.thread_brand (char*) */ LTTV_FILTER_STATE_EX_MODE, /**< state.execution_mode (LttvExecutionMode) */ LTTV_FILTER_STATE_EX_SUBMODE, /**< state.execution_submode (LttvExecutionSubmode) */ LTTV_FILTER_STATE_P_STATUS, /**< state.process_status (LttvProcessStatus) */ diff --git a/ltt/branches/poly/lttv/lttv/print.c b/ltt/branches/poly/lttv/lttv/print.c index f06c527c..953326ab 100644 --- a/ltt/branches/poly/lttv/lttv/print.c +++ b/ltt/branches/poly/lttv/lttv/print.c @@ -250,8 +250,9 @@ void lttv_event_to_string(LttEvent *e, GString *s, g_quark_to_string(ltt_tracefile_name(tfs->parent.tf)), cpu); /* Print the process id and the state/interrupt type of the process */ - g_string_append_printf(s,", %u, %s, %u, 0x%llX, %s", process->pid, + g_string_append_printf(s,", %u, %s, %s, %u, 0x%llX, %s", process->pid, g_quark_to_string(process->name), + g_quark_to_string(process->brand), process->ppid, process->current_function, g_quark_to_string(process->state->t)); } diff --git a/ltt/branches/poly/lttv/lttv/state.c b/ltt/branches/poly/lttv/lttv/state.c index 9b3c0822..a3a3102a 100644 --- a/ltt/branches/poly/lttv/lttv/state.c +++ b/ltt/branches/poly/lttv/lttv/state.c @@ -61,7 +61,8 @@ GQuark LTT_EVENT_EXEC, LTT_EVENT_ENUM_PROCESS_STATE, LTT_EVENT_FUNCTION_ENTRY, - LTT_EVENT_FUNCTION_EXIT; + LTT_EVENT_FUNCTION_EXIT, + LTT_EVENT_THREAD_BRAND; /* Fields Quarks */ @@ -99,6 +100,7 @@ LttvExecutionSubmode LttvProcessStatus LTTV_STATE_UNNAMED, + LTTV_STATE_UNBRANDED, LTTV_STATE_WAIT_FORK, LTTV_STATE_WAIT_CPU, LTTV_STATE_EXIT, @@ -420,10 +422,11 @@ static void write_process_state(gpointer key, gpointer value, process = (LttvProcessState *)value; fprintf(fp, -" \n", +" \n", process, process->pid, process->ppid, g_quark_to_string(process->type), process->creation_time.tv_sec, process->creation_time.tv_nsec, g_quark_to_string(process->name), + g_quark_to_string(process->brand), process->cpu); for(i = 0 ; i < process->execution_stack->len; i++) { @@ -1105,10 +1108,11 @@ static void pop_state(LttvTracefileState *tfs, LttvExecutionMode t) g_info("process state has %s when pop_int is %s\n", g_quark_to_string(process->state->t), g_quark_to_string(t)); - g_info("{ %u, %u, %s, %s }\n", + g_info("{ %u, %u, %s, %s, %s }\n", process->pid, process->ppid, g_quark_to_string(process->name), + g_quark_to_string(process->brand), g_quark_to_string(process->state->s)); return; } @@ -1193,6 +1197,7 @@ lttv_state_create_process(LttvTraceState *tcs, LttvProcessState *parent, process->pid = pid; process->cpu = cpu; process->name = name; + process->brand = LTTV_STATE_UNBRANDED; //process->last_cpu = tfs->cpu_name; //process->last_cpu_index = ltt_tracefile_num(((LttvTracefileContext*)tfs)->tf); process->type = LTTV_STATE_USER_THREAD; @@ -1483,10 +1488,11 @@ static void pop_function(LttvTracefileState *tfs, guint64 funcptr) tfs->parent.timestamp.tv_sec, tfs->parent.timestamp.tv_nsec); g_info("process state has %llu when pop_function is %llu\n", process->current_function, funcptr); - g_info("{ %u, %u, %s, %s }\n", + g_info("{ %u, %u, %s, %s, %s }\n", process->pid, process->ppid, g_quark_to_string(process->name), + g_quark_to_string(process->brand), g_quark_to_string(process->state->s)); return; } @@ -1777,6 +1783,22 @@ static gboolean process_exec(void *hook_data, void *call_data) return FALSE; } +static gboolean thread_brand(void *hook_data, void *call_data) +{ + LttvTracefileState *s = (LttvTracefileState *)call_data; + LttvTraceState *ts = (LttvTraceState*)s->parent.t_context; + LttEvent *e = ltt_tracefile_get_event(s->parent.tf); + LttvTraceHookByFacility *thf = (LttvTraceHookByFacility *)hook_data; + gchar *name; + guint cpu = s->cpu; + LttvProcessState *process = ts->running_process[cpu]; + + name = ltt_event_get_string(e, thf->f1); + process->brand = g_quark_from_string(name); + + return FALSE; +} + static gboolean enum_process_state(void *hook_data, void *call_data) { LttvTracefileState *s = (LttvTracefileState *)call_data; @@ -1916,8 +1938,8 @@ void lttv_state_add_event_hooks(LttvTracesetState *self) /* Find the eventtype id for the following events and register the associated by id hooks. */ - hooks = g_array_sized_new(FALSE, FALSE, sizeof(LttvTraceHook), 17); - hooks = g_array_set_size(hooks, 17); // Max possible number of hooks. + hooks = g_array_sized_new(FALSE, FALSE, sizeof(LttvTraceHook), 18); + hooks = g_array_set_size(hooks, 18); // Max possible number of hooks. hn = 0; ret = lttv_trace_find_hook(ts->parent.t, @@ -2005,6 +2027,12 @@ void lttv_state_add_event_hooks(LttvTracesetState *self) process_exec, NULL, &g_array_index(hooks, LttvTraceHook, hn++)); if(ret) hn--; + ret = lttv_trace_find_hook(ts->parent.t, + LTT_FACILITY_USER_GENERIC, LTT_EVENT_THREAD_BRAND, + LTT_FIELD_NAME, 0, 0, + thread_brand, NULL, &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; + /* statedump-related hooks */ ret = lttv_trace_find_hook(ts->parent.t, LTT_FACILITY_STATEDUMP, LTT_EVENT_ENUM_PROCESS_STATE, @@ -2658,6 +2686,7 @@ lttv_tracefile_state_get_type(void) static void module_init() { LTTV_STATE_UNNAMED = g_quark_from_string("UNNAMED"); + LTTV_STATE_UNBRANDED = g_quark_from_string("UNBRANDED"); LTTV_STATE_MODE_UNKNOWN = g_quark_from_string("MODE_UNKNOWN"); LTTV_STATE_USER_MODE = g_quark_from_string("USER_MODE"); LTTV_STATE_SYSCALL = g_quark_from_string("SYSCALL"); @@ -2714,6 +2743,7 @@ static void module_init() LTT_EVENT_ENUM_PROCESS_STATE = g_quark_from_string("enumerate_process_state"); LTT_EVENT_FUNCTION_ENTRY = g_quark_from_string("function_entry"); LTT_EVENT_FUNCTION_EXIT = g_quark_from_string("function_exit"); + LTT_EVENT_THREAD_BRAND = g_quark_from_string("thread_brand"); LTT_FIELD_SYSCALL_ID = g_quark_from_string("syscall_id"); diff --git a/ltt/branches/poly/lttv/lttv/state.h b/ltt/branches/poly/lttv/lttv/state.h index 62f8e3ab..b299c201 100644 --- a/ltt/branches/poly/lttv/lttv/state.h +++ b/ltt/branches/poly/lttv/lttv/state.h @@ -82,7 +82,8 @@ extern GQuark LTT_EVENT_EXEC, LTT_EVENT_ENUM_PROCESS_STATE, LTT_EVENT_FUNCTION_ENTRY, - LTT_EVENT_FUNCTION_EXIT; + LTT_EVENT_FUNCTION_EXIT, + LTT_EVENT_THREAD_BRAND; /* Fields Quarks */ @@ -179,6 +180,7 @@ typedef GQuark LttvProcessStatus; extern LttvProcessStatus LTTV_STATE_UNNAMED, + LTTV_STATE_UNBRANDED, LTTV_STATE_WAIT_FORK, LTTV_STATE_WAIT_CPU, LTTV_STATE_EXIT, @@ -208,6 +210,7 @@ typedef struct _LttvProcessState { LttTime creation_time; LttTime insertion_time; GQuark name; + GQuark brand; GQuark pid_time; GArray *execution_stack; /* Array of LttvExecutionState */ LttvExecutionState *state; /* Top of interrupt stack */ diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c b/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c index 9aec7623..224d3ee8 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/drawing.c @@ -221,7 +221,7 @@ void drawing_data_request(Drawing_t *drawing, associated by id hooks. */ hooks = g_array_new(FALSE, FALSE, sizeof(LttvTraceHook)); - hooks = g_array_set_size(hooks, 16); + hooks = g_array_set_size(hooks, 17); before_hn = after_hn = 0; /* before hooks */ @@ -399,6 +399,14 @@ void drawing_data_request(Drawing_t *drawing, &g_array_index(hooks, LttvTraceHook, after_hn++)); if(ret) after_hn--; + ret = lttv_trace_find_hook(ts->parent.t, + LTT_FACILITY_USER_GENERIC, LTT_EVENT_THREAD_BRAND, + LTT_FIELD_NAME, 0, 0, + after_user_generic_thread_brand_hook, + events_request, + &g_array_index(hooks, LttvTraceHook, after_hn++)); + if(ret) after_hn--; + ret = lttv_trace_find_hook(ts->parent.t, LTT_FACILITY_STATEDUMP, LTT_EVENT_ENUM_PROCESS_STATE, LTT_FIELD_PID, LTT_FIELD_PARENT_PID, LTT_FIELD_NAME, diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c b/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c index 15739dd5..cc4a553b 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.c @@ -399,6 +399,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) &birth, tfc->t_context->index, process->name, + process->brand, &pl_height, &process_info, &hashed_process_data); @@ -555,6 +556,7 @@ int before_schedchange_hook(void *hook_data, void *call_data) &birth, tfc->t_context->index, process->name, + process->brand, &pl_height, &process_info, &hashed_process_data); @@ -775,6 +777,7 @@ int after_schedchange_hook(void *hook_data, void *call_data) &birth, tfc->t_context->index, process_in->name, + process_in->brand, &pl_height, &process_info, &hashed_process_data_in); @@ -898,6 +901,7 @@ int before_execmode_hook(void *hook_data, void *call_data) &birth, tfc->t_context->index, process->name, + process->brand, &pl_height, &process_info, &hashed_process_data); @@ -1087,6 +1091,7 @@ int before_process_exit_hook(void *hook_data, void *call_data) &birth, tfc->t_context->index, process->name, + process->brand, &pl_height, &process_info, &hashed_process_data); @@ -1281,6 +1286,7 @@ int before_process_release_hook(void *hook_data, void *call_data) &birth, tfc->t_context->index, process->name, + process->brand, &pl_height, &process_info, &hashed_process_data); @@ -1473,6 +1479,7 @@ int after_process_fork_hook(void *hook_data, void *call_data) &birth, tfc->t_context->index, process_child->name, + process_child->brand, &pl_height, &process_info, &hashed_process_data_child); @@ -1591,6 +1598,7 @@ int after_process_exit_hook(void *hook_data, void *call_data) &birth, tfc->t_context->index, process->name, + process->brand, &pl_height, &process_info, &hashed_process_data); @@ -1685,6 +1693,7 @@ int after_fs_exec_hook(void *hook_data, void *call_data) &birth, tfc->t_context->index, process->name, + process->brand, &pl_height, &process_info, &hashed_process_data); @@ -1704,6 +1713,77 @@ int after_fs_exec_hook(void *hook_data, void *call_data) } +/* 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; + + guint cpu = tfs->cpu; + 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, + 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[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 @@ -1778,6 +1858,7 @@ int after_event_enum_process_hook(void *hook_data, void *call_data) &birth, tfc->t_context->index, process_in->name, + process_in->brand, &pl_height, &process_info, &hashed_process_data_in); diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.h b/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.h index d1d9714e..aab74e94 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.h +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/eventhooks.h @@ -94,6 +94,7 @@ int before_process_release_hook(void *hook_data, void *call_data); int after_process_exit_hook(void *hook_data, void *call_data); int after_process_fork_hook(void *hook_data, void *call_data); int after_fs_exec_hook(void *hook_data, void *call_data); +int after_user_generic_thread_brand_hook(void *hook_data, void *call_data); int after_event_enum_process_hook(void *hook_data, void *call_data); #if 0 diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c index 3c9a5dad..d7145924 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.c @@ -350,6 +350,7 @@ ProcessList *processlist_construct(void) /* Create the Process list */ process_list->list_store = gtk_list_store_new ( N_COLUMNS, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_UINT, @@ -425,7 +426,17 @@ ProcessList *processlist_construct(void) GTK_TREE_VIEW (process_list->process_list_widget), column); process_list->button = column->button; - + + column = gtk_tree_view_column_new_with_attributes ( "Brand", + renderer, + "text", + BRAND_COLUMN, + NULL); + gtk_tree_view_column_set_alignment (column, 0.0); + gtk_tree_view_column_set_fixed_width (column, 45); + gtk_tree_view_append_column ( + GTK_TREE_VIEW (process_list->process_list_widget), column); + column = gtk_tree_view_column_new_with_attributes ( "PID", renderer, "text", @@ -558,6 +569,14 @@ void processlist_set_name(ProcessList *process_list, -1); } +void processlist_set_brand(ProcessList *process_list, + GQuark brand, + HashedProcessData *hashed_process_data) +{ + gtk_list_store_set ( process_list->list_store, &hashed_process_data->y_iter, + BRAND_COLUMN, g_quark_to_string(brand), + -1); +} void processlist_set_ppid(ProcessList *process_list, guint ppid, HashedProcessData *hashed_process_data) @@ -576,6 +595,7 @@ int processlist_add( ProcessList *process_list, LttTime *birth, guint trace_num, GQuark name, + GQuark brand, guint *height, ProcessInfo **pm_process_info, HashedProcessData **pm_hashed_process_data) @@ -617,6 +637,7 @@ int processlist_add( ProcessList *process_list, gtk_list_store_set ( process_list->list_store, &hashed_process_data->y_iter, PROCESS_COLUMN, g_quark_to_string(name), + BRAND_COLUMN, g_quark_to_string(brand), PID_COLUMN, pid, PPID_COLUMN, ppid, CPU_COLUMN, cpu, diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h index e6c05bd4..daffefaf 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/processlist.h @@ -46,6 +46,7 @@ enum { PROCESS_COLUMN, + BRAND_COLUMN, PID_COLUMN, PPID_COLUMN, CPU_COLUMN, @@ -133,7 +134,7 @@ void processlist_clear(ProcessList *process_list); /* CPU num is only used for PID 0 */ int processlist_add(ProcessList *process_list, Drawing_t * drawing, guint pid, guint cpu, guint ppid, - LttTime *birth, guint trace_num, GQuark name, guint *height, + LttTime *birth, guint trace_num, GQuark name, GQuark brand, guint *height, ProcessInfo **process_info, HashedProcessData **hashed_process_data); // out : success (0) and height @@ -145,6 +146,10 @@ void processlist_set_name(ProcessList *process_list, GQuark name, HashedProcessData *hashed_process_data); +void processlist_set_brand(ProcessList *process_list, + GQuark brand, + HashedProcessData *hashed_process_data); + /* Set the ppid of a process */ void processlist_set_ppid(ProcessList *process_list, guint ppid, diff --git a/ltt/branches/poly/lttv/modules/gui/filter/filter.c b/ltt/branches/poly/lttv/modules/gui/filter/filter.c index 8d1232b0..dab7d1f3 100644 --- a/ltt/branches/poly/lttv/modules/gui/filter/filter.c +++ b/ltt/branches/poly/lttv/modules/gui/filter/filter.c @@ -195,6 +195,7 @@ gui_filter(Tab *tab) g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("tracefile.name")); g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("trace.name")); g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("state.process_name")); + g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("state.thread_brand")); g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("state.pid")); g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("state.ppid")); g_ptr_array_add(fvd->f_field_options,(gpointer) g_string_new("state.creation_time")); diff --git a/ltt/branches/poly/lttv/modules/text/textFilter.c b/ltt/branches/poly/lttv/modules/text/textFilter.c index 41e478d2..6934011c 100644 --- a/ltt/branches/poly/lttv/modules/text/textFilter.c +++ b/ltt/branches/poly/lttv/modules/text/textFilter.c @@ -139,12 +139,13 @@ void filter_list_commands(void *hook_data) { g_print("state.pid (integer)\n"); g_print("state.ppid (integer)\n"); g_print("state.creation_time (double)\n"); - g_print("trace.insertion_time (double)\n"); - g_print("trace.process_name (string)\n"); - g_print("trace.execution_mode (string)\n"); - g_print("trace.execution_submode (string)\n"); - g_print("trace.process_status (string)\n"); - g_print("trace.cpu (string)\n\n"); + g_print("state.insertion_time (double)\n"); + g_print("state.process_name (string)\n"); + g_print("state.thread_brand (string)\n"); + g_print("state.execution_mode (string)\n"); + g_print("state.execution_submode (string)\n"); + g_print("state.process_status (string)\n"); + g_print("state.cpu (string)\n\n"); g_print("*** Possible operators ***\n"); g_print("equal '='\n"); -- 2.34.1