From 3f1e092ed414ab2a9f73eafe87f35e868030463c Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Wed, 31 Mar 2010 05:32:43 -0400 Subject: trace-view: Added saving of filters Add "Save filters" to "File" menu, where it will allow the user to save the filters to a file in XML format. Signed-off-by: Steven Rostedt --- trace-view.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'trace-view.c') diff --git a/trace-view.c b/trace-view.c index 59e7e1a..c183b19 100644 --- a/trace-view.c +++ b/trace-view.c @@ -29,6 +29,7 @@ #include "trace-local.h" #include "trace-view.h" #include "trace-compat.h" +#include "version.h" #include "cpu.h" #include "util.h" @@ -870,3 +871,50 @@ void trace_view_search_setup(GtkBox *box, GtkTreeView *treeview) G_CALLBACK (search_tree), (gpointer) info); } + +int trace_view_save_filters(struct tracecmd_xml_handle *handle, + GtkTreeView *trace_tree) +{ + struct event_filter *event_filter; + GtkTreeModel *model; + TraceViewStore *store; + gboolean all_events; + + model = gtk_tree_view_get_model(trace_tree); + if (!model) + return -1; + + store = TRACE_VIEW_STORE(model); + + tracecmd_xml_start_system(handle, "TraceView", VERSION_STRING); + + all_events = trace_view_store_get_all_events_enabled(store); + event_filter = trace_view_store_get_event_filter(store); + + tracecmd_xml_start_sub_system(handle, "EventFilter"); + + if (all_events || !event_filter) + tracecmd_xml_write_element(handle, "FilterType", "all events"); + else { + tracecmd_xml_write_element(handle, "FilterType", "filter"); + trace_filter_save_events(handle, event_filter); + } + + tracecmd_xml_end_sub_system(handle); + + if (store->task_filter) { + tracecmd_xml_start_sub_system(handle, "TaskFilter"); + trace_filter_save_tasks(handle, store->task_filter); + tracecmd_xml_end_sub_system(handle); + } + + if (store->hide_tasks) { + tracecmd_xml_start_sub_system(handle, "HideTasks"); + trace_filter_save_tasks(handle, store->hide_tasks); + tracecmd_xml_end_sub_system(handle); + } + + tracecmd_xml_end_system(handle); + + return 0; +} -- cgit v1.2.2 From b2a9cd2f38f6c3c30e9ef4c47eb004b41b50fe5e Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Mon, 5 Apr 2010 12:40:51 -0400 Subject: trace-view: Add loading of saved event filters Add "Load filters" to trace-view that loads the event filters saved with a "Save filters". Signed-off-by: Steven Rostedt --- trace-view.c | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) (limited to 'trace-view.c') diff --git a/trace-view.c b/trace-view.c index c183b19..094f226 100644 --- a/trace-view.c +++ b/trace-view.c @@ -918,3 +918,119 @@ int trace_view_save_filters(struct tracecmd_xml_handle *handle, return 0; } + +static int load_event_filter(TraceViewStore *store, + struct tracecmd_xml_handle *handle, + struct tracecmd_xml_system_node *node) +{ + struct tracecmd_xml_system_node *child; + struct event_filter *event_filter; + const char *name; + const char *value; + + event_filter = trace_view_store_get_event_filter(store); + + child = tracecmd_xml_node_child(node); + name = tracecmd_xml_node_type(child); + if (strcmp(name, "FilterType") != 0) + return -1; + + value = tracecmd_xml_node_value(handle, child); + /* Do nothing with all events enabled */ + if (strcmp(value, "all events") == 0) + return 0; + + node = tracecmd_xml_node_next(child); + if (!node) + return -1; + + trace_view_store_clear_all_events_enabled(store); + + trace_filter_load_events(event_filter, handle, node); + + return 0; +} + +static int load_task_filter(TraceViewStore *store, + struct tracecmd_xml_handle *handle, + struct tracecmd_xml_system_node *node) +{ + struct tracecmd_xml_system_node *child; + const char *name; + const char *value; + + child = tracecmd_xml_node_child(node); + name = tracecmd_xml_node_type(child); + if (strcmp(name, "FilterType") == 0) { + value = tracecmd_xml_node_value(handle, child); + printf("value = %s\n", value); + } + + return 0; +} + +static int load_hide_tasks(TraceViewStore *store, + struct tracecmd_xml_handle *handle, + struct tracecmd_xml_system_node *node) +{ + struct tracecmd_xml_system_node *child; + const char *name; + const char *value; + + child = tracecmd_xml_node_child(node); + name = tracecmd_xml_node_type(child); + if (strcmp(name, "FilterType") == 0) { + value = tracecmd_xml_node_value(handle, child); + printf("value = %s\n", value); + } + + return 0; +} + +int trace_view_load_filters(struct tracecmd_xml_handle *handle, + GtkTreeView *trace_tree) +{ + struct tracecmd_xml_system *system; + struct tracecmd_xml_system_node *syschild; + GtkTreeModel *model; + TraceViewStore *store; + const char *name; + + model = gtk_tree_view_get_model(trace_tree); + if (!model) + return -1; + + store = TRACE_VIEW_STORE(model); + + system = tracecmd_xml_find_system(handle, "TraceView"); + if (!system) + return -1; + + syschild = tracecmd_xml_system_node(system); + if (!syschild) + goto out_free_sys; + + do { + name = tracecmd_xml_node_type(syschild); + + if (strcmp(name, "EventFilter") == 0) + load_event_filter(store, handle, syschild); + + else if (strcmp(name, "TaskFilter") == 0) + load_task_filter(store, handle, syschild); + + else if (strcmp(name, "HideTasks") == 0) + load_hide_tasks(store, handle, syschild); + + syschild = tracecmd_xml_node_next(syschild); + } while (syschild); + + tracecmd_xml_free_system(system); + + update_rows(trace_tree, store); + return 0; + + out_free_sys: + tracecmd_xml_free_system(system); + return -1; +} -- cgit v1.2.2 From 64be78aa61dfda0c5fdf5c7ccfc2d9a93ba52aa5 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Mon, 5 Apr 2010 20:56:05 -0400 Subject: trace-view: Add save and load of task filters Include saving of the task filters to the filter file as well as the ability to load them. Signed-off-by: Steven Rostedt --- trace-view.c | 56 ++++++++++++-------------------------------------------- 1 file changed, 12 insertions(+), 44 deletions(-) (limited to 'trace-view.c') diff --git a/trace-view.c b/trace-view.c index 094f226..c1ce4ff 100644 --- a/trace-view.c +++ b/trace-view.c @@ -873,7 +873,9 @@ void trace_view_search_setup(GtkBox *box, GtkTreeView *treeview) } int trace_view_save_filters(struct tracecmd_xml_handle *handle, - GtkTreeView *trace_tree) + GtkTreeView *trace_tree, + struct filter_task *task_filter, + struct filter_task *hide_tasks) { struct event_filter *event_filter; GtkTreeModel *model; @@ -902,15 +904,15 @@ int trace_view_save_filters(struct tracecmd_xml_handle *handle, tracecmd_xml_end_sub_system(handle); - if (store->task_filter) { + if (task_filter && filter_task_count(task_filter)) { tracecmd_xml_start_sub_system(handle, "TaskFilter"); - trace_filter_save_tasks(handle, store->task_filter); + trace_filter_save_tasks(handle, task_filter); tracecmd_xml_end_sub_system(handle); } - if (store->hide_tasks) { + if (hide_tasks && filter_task_count(hide_tasks)) { tracecmd_xml_start_sub_system(handle, "HideTasks"); - trace_filter_save_tasks(handle, store->hide_tasks); + trace_filter_save_tasks(handle, hide_tasks); tracecmd_xml_end_sub_system(handle); } @@ -951,44 +953,10 @@ static int load_event_filter(TraceViewStore *store, return 0; } -static int load_task_filter(TraceViewStore *store, - struct tracecmd_xml_handle *handle, - struct tracecmd_xml_system_node *node) -{ - struct tracecmd_xml_system_node *child; - const char *name; - const char *value; - - child = tracecmd_xml_node_child(node); - name = tracecmd_xml_node_type(child); - if (strcmp(name, "FilterType") == 0) { - value = tracecmd_xml_node_value(handle, child); - printf("value = %s\n", value); - } - - return 0; -} - -static int load_hide_tasks(TraceViewStore *store, - struct tracecmd_xml_handle *handle, - struct tracecmd_xml_system_node *node) -{ - struct tracecmd_xml_system_node *child; - const char *name; - const char *value; - - child = tracecmd_xml_node_child(node); - name = tracecmd_xml_node_type(child); - if (strcmp(name, "FilterType") == 0) { - value = tracecmd_xml_node_value(handle, child); - printf("value = %s\n", value); - } - - return 0; -} - int trace_view_load_filters(struct tracecmd_xml_handle *handle, - GtkTreeView *trace_tree) + GtkTreeView *trace_tree, + struct filter_task *task_filter, + struct filter_task *hide_tasks) { struct tracecmd_xml_system *system; struct tracecmd_xml_system_node *syschild; @@ -1017,10 +985,10 @@ int trace_view_load_filters(struct tracecmd_xml_handle *handle, load_event_filter(store, handle, syschild); else if (strcmp(name, "TaskFilter") == 0) - load_task_filter(store, handle, syschild); + trace_filter_load_task_filter(task_filter, handle, syschild); else if (strcmp(name, "HideTasks") == 0) - load_hide_tasks(store, handle, syschild); + trace_filter_load_task_filter(hide_tasks, handle, syschild); syschild = tracecmd_xml_node_next(syschild); } while (syschild); -- cgit v1.2.2 From 20359fdc358744dee36b8e59c234e965fc7d2a69 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Mon, 5 Apr 2010 22:40:54 -0400 Subject: kernelshark: Make all saved filters under KernelShark Make the xml doc under ... for trace-view and trace-graph. Also pull out the task filters since the view and graph in kernelshark share the same filters. Signed-off-by: Steven Rostedt --- trace-view.c | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) (limited to 'trace-view.c') diff --git a/trace-view.c b/trace-view.c index c1ce4ff..8d121d1 100644 --- a/trace-view.c +++ b/trace-view.c @@ -29,7 +29,6 @@ #include "trace-local.h" #include "trace-view.h" #include "trace-compat.h" -#include "version.h" #include "cpu.h" #include "util.h" @@ -873,9 +872,7 @@ void trace_view_search_setup(GtkBox *box, GtkTreeView *treeview) } int trace_view_save_filters(struct tracecmd_xml_handle *handle, - GtkTreeView *trace_tree, - struct filter_task *task_filter, - struct filter_task *hide_tasks) + GtkTreeView *trace_tree) { struct event_filter *event_filter; GtkTreeModel *model; @@ -888,7 +885,7 @@ int trace_view_save_filters(struct tracecmd_xml_handle *handle, store = TRACE_VIEW_STORE(model); - tracecmd_xml_start_system(handle, "TraceView", VERSION_STRING); + tracecmd_xml_start_system(handle, "TraceView"); all_events = trace_view_store_get_all_events_enabled(store); event_filter = trace_view_store_get_event_filter(store); @@ -904,18 +901,6 @@ int trace_view_save_filters(struct tracecmd_xml_handle *handle, tracecmd_xml_end_sub_system(handle); - if (task_filter && filter_task_count(task_filter)) { - tracecmd_xml_start_sub_system(handle, "TaskFilter"); - trace_filter_save_tasks(handle, task_filter); - tracecmd_xml_end_sub_system(handle); - } - - if (hide_tasks && filter_task_count(hide_tasks)) { - tracecmd_xml_start_sub_system(handle, "HideTasks"); - trace_filter_save_tasks(handle, hide_tasks); - tracecmd_xml_end_sub_system(handle); - } - tracecmd_xml_end_system(handle); return 0; @@ -954,9 +939,7 @@ static int load_event_filter(TraceViewStore *store, } int trace_view_load_filters(struct tracecmd_xml_handle *handle, - GtkTreeView *trace_tree, - struct filter_task *task_filter, - struct filter_task *hide_tasks) + GtkTreeView *trace_tree) { struct tracecmd_xml_system *system; struct tracecmd_xml_system_node *syschild; @@ -984,12 +967,6 @@ int trace_view_load_filters(struct tracecmd_xml_handle *handle, if (strcmp(name, "EventFilter") == 0) load_event_filter(store, handle, syschild); - else if (strcmp(name, "TaskFilter") == 0) - trace_filter_load_task_filter(task_filter, handle, syschild); - - else if (strcmp(name, "HideTasks") == 0) - trace_filter_load_task_filter(hide_tasks, handle, syschild); - syschild = tracecmd_xml_node_next(syschild); } while (syschild); -- cgit v1.2.2