aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2010-04-05 22:40:54 -0400
committerSteven Rostedt <rostedt@goodmis.org>2010-04-09 11:56:18 -0400
commit20359fdc358744dee36b8e59c234e965fc7d2a69 (patch)
treed8069b706c554939cf40a9b9b8485826afb4b7c6
parent338a694c0002d70349de3f0e7e47322467f72765 (diff)
kernelshark: Make all saved filters under KernelShark
Make the xml doc under <KernelShark>...</KernelShark> 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 <rostedt@goodmis.org>
-rw-r--r--kernel-shark.c21
-rw-r--r--trace-filter.c62
-rw-r--r--trace-filter.h6
-rw-r--r--trace-graph-main.c10
-rw-r--r--trace-graph.c31
-rw-r--r--trace-view-main.c19
-rw-r--r--trace-view.c29
-rw-r--r--trace-view.h8
-rw-r--r--trace-xml.c15
-rw-r--r--trace-xml.h4
10 files changed, 125 insertions, 80 deletions
diff --git a/kernel-shark.c b/kernel-shark.c
index 7bc80fe..b0f1ecb 100644
--- a/kernel-shark.c
+++ b/kernel-shark.c
@@ -177,15 +177,10 @@ load_filters_clicked (gpointer data)
177 warning("Could not open %s", filename); 177 warning("Could not open %s", filename);
178 g_free(filename); 178 g_free(filename);
179 179
180 /* 180 trace_filter_load_filters(handle, ginfo->task_filter,
181 * Just in case we are loading only a tree view filter, 181 ginfo->hide_tasks);
182 * we will load the task filters for the tree view first. 182
183 * Then we load the graph next, and if the graph has 183 trace_view_load_filters(handle, trace_tree);
184 * trace filters, than those will override them.
185 */
186 trace_view_load_filters(handle, trace_tree,
187 ginfo->task_filter,
188 ginfo->hide_tasks);
189 trace_graph_load_filters(ginfo, handle); 184 trace_graph_load_filters(ginfo, handle);
190 185
191 tracecmd_xml_close(handle); 186 tracecmd_xml_close(handle);
@@ -205,16 +200,18 @@ save_filters_clicked (gpointer data)
205 if (!filename) 200 if (!filename)
206 return; 201 return;
207 202
208 handle = tracecmd_xml_create(filename); 203 handle = tracecmd_xml_create(filename, VERSION_STRING);
209 if (!handle) 204 if (!handle)
210 warning("Could not create %s", filename); 205 warning("Could not create %s", filename);
211 g_free(filename); 206 g_free(filename);
212 207
213 trace_view_save_filters(handle, trace_tree, 208 trace_view_save_filters(handle, trace_tree);
214 ginfo->task_filter, ginfo->hide_tasks);
215 209
216 trace_graph_save_filters(ginfo, handle); 210 trace_graph_save_filters(ginfo, handle);
217 211
212 trace_filter_save_filters(handle, ginfo->task_filter,
213 ginfo->hide_tasks);
214
218 tracecmd_xml_close(handle); 215 tracecmd_xml_close(handle);
219} 216}
220 217
diff --git a/trace-filter.c b/trace-filter.c
index b6035ad..3f78637 100644
--- a/trace-filter.c
+++ b/trace-filter.c
@@ -2327,3 +2327,65 @@ int trace_filter_load_task_filter(struct filter_task *filter,
2327 2327
2328 return 0; 2328 return 0;
2329} 2329}
2330
2331int trace_filter_load_filters(struct tracecmd_xml_handle *handle,
2332 struct filter_task *task_filter,
2333 struct filter_task *hide_tasks)
2334{
2335 struct tracecmd_xml_system *system;
2336 struct tracecmd_xml_system_node *syschild;
2337 const char *name;
2338
2339 system = tracecmd_xml_find_system(handle, "TraceFilter");
2340 if (!system)
2341 return -1;
2342
2343
2344 syschild = tracecmd_xml_system_node(system);
2345 if (!syschild)
2346 goto out_free_sys;
2347
2348 do {
2349 name = tracecmd_xml_node_type(syschild);
2350
2351 if (strcmp(name, "TaskFilter") == 0)
2352 trace_filter_load_task_filter(task_filter, handle, syschild);
2353
2354 else if (strcmp(name, "HideTasks") == 0)
2355 trace_filter_load_task_filter(hide_tasks, handle, syschild);
2356
2357 syschild = tracecmd_xml_node_next(syschild);
2358 } while (syschild);
2359
2360 tracecmd_xml_free_system(system);
2361
2362 return 0;
2363
2364 out_free_sys:
2365 tracecmd_xml_free_system(system);
2366 return -1;
2367}
2368
2369int trace_filter_save_filters(struct tracecmd_xml_handle *handle,
2370 struct filter_task *task_filter,
2371 struct filter_task *hide_tasks)
2372{
2373
2374 tracecmd_xml_start_system(handle, "TraceFilter");
2375
2376 if (task_filter && filter_task_count(task_filter)) {
2377 tracecmd_xml_start_sub_system(handle, "TaskFilter");
2378 trace_filter_save_tasks(handle, task_filter);
2379 tracecmd_xml_end_sub_system(handle);
2380 }
2381
2382 if (hide_tasks && filter_task_count(hide_tasks)) {
2383 tracecmd_xml_start_sub_system(handle, "HideTasks");
2384 trace_filter_save_tasks(handle, hide_tasks);
2385 tracecmd_xml_end_sub_system(handle);
2386 }
2387
2388 tracecmd_xml_end_system(handle);
2389
2390 return 0;
2391}
diff --git a/trace-filter.h b/trace-filter.h
index fd60bce..e0f9f4a 100644
--- a/trace-filter.h
+++ b/trace-filter.h
@@ -148,6 +148,12 @@ int trace_filter_load_events(struct event_filter *event_filter,
148int trace_filter_load_task_filter(struct filter_task *filter, 148int trace_filter_load_task_filter(struct filter_task *filter,
149 struct tracecmd_xml_handle *handle, 149 struct tracecmd_xml_handle *handle,
150 struct tracecmd_xml_system_node *node); 150 struct tracecmd_xml_system_node *node);
151int trace_filter_load_filters(struct tracecmd_xml_handle *handle,
152 struct filter_task *task_filter,
153 struct filter_task *hide_tasks);
154int trace_filter_save_filters(struct tracecmd_xml_handle *handle,
155 struct filter_task *task_filter,
156 struct filter_task *hide_tasks);
151 157
152/* put here because there's no other place */ 158/* put here because there's no other place */
153 159
diff --git a/trace-graph-main.c b/trace-graph-main.c
index 4a9fed1..0490a86 100644
--- a/trace-graph-main.c
+++ b/trace-graph-main.c
@@ -31,6 +31,8 @@
31#include "trace-filter.h" 31#include "trace-filter.h"
32#include "trace-gui.h" 32#include "trace-gui.h"
33 33
34#include "version.h"
35
34#define version "0.1.1" 36#define version "0.1.1"
35 37
36#define TRACE_WIDTH 800 38#define TRACE_WIDTH 800
@@ -169,6 +171,9 @@ load_filters_clicked (gpointer data)
169 warning("Could not open %s", filename); 171 warning("Could not open %s", filename);
170 g_free(filename); 172 g_free(filename);
171 173
174 trace_filter_load_filters(handle, ginfo->task_filter,
175 ginfo->hide_tasks);
176
172 trace_graph_load_filters(ginfo, handle); 177 trace_graph_load_filters(ginfo, handle);
173 178
174 tracecmd_xml_close(handle); 179 tracecmd_xml_close(handle);
@@ -186,11 +191,14 @@ save_filters_clicked (gpointer data)
186 if (!filename) 191 if (!filename)
187 return; 192 return;
188 193
189 handle = tracecmd_xml_create(filename); 194 handle = tracecmd_xml_create(filename, VERSION_STRING);
190 if (!handle) 195 if (!handle)
191 warning("Could not create %s", filename); 196 warning("Could not create %s", filename);
192 g_free(filename); 197 g_free(filename);
193 198
199 trace_filter_save_filters(handle, ginfo->task_filter,
200 ginfo->hide_tasks);
201
194 trace_graph_save_filters(ginfo, handle); 202 trace_graph_save_filters(ginfo, handle);
195 203
196 tracecmd_xml_close(handle); 204 tracecmd_xml_close(handle);
diff --git a/trace-graph.c b/trace-graph.c
index 9ec3924..e21ee33 100644
--- a/trace-graph.c
+++ b/trace-graph.c
@@ -32,8 +32,6 @@
32#include "trace-hash.h" 32#include "trace-hash.h"
33#include "trace-filter.h" 33#include "trace-filter.h"
34 34
35#include "version.h"
36
37#include "util.h" 35#include "util.h"
38 36
39#define DEBUG_LEVEL 0 37#define DEBUG_LEVEL 0
@@ -2437,6 +2435,12 @@ int trace_graph_load_filters(struct graph_info *ginfo,
2437 struct tracecmd_xml_system_node *syschild; 2435 struct tracecmd_xml_system_node *syschild;
2438 const char *name; 2436 const char *name;
2439 2437
2438 if (filter_task_count(ginfo->task_filter) ||
2439 filter_task_count(ginfo->hide_tasks))
2440 ginfo->filter_available = 1;
2441 else
2442 ginfo->filter_available = 0;
2443
2440 system = tracecmd_xml_find_system(handle, "TraceGraph"); 2444 system = tracecmd_xml_find_system(handle, "TraceGraph");
2441 if (!system) 2445 if (!system)
2442 return -1; 2446 return -1;
@@ -2451,12 +2455,6 @@ int trace_graph_load_filters(struct graph_info *ginfo,
2451 if (strcmp(name, "EventFilter") == 0) 2455 if (strcmp(name, "EventFilter") == 0)
2452 load_event_filter(ginfo, handle, syschild); 2456 load_event_filter(ginfo, handle, syschild);
2453 2457
2454 else if (strcmp(name, "TaskFilter") == 0)
2455 trace_filter_load_task_filter(ginfo->task_filter, handle, syschild);
2456
2457 else if (strcmp(name, "HideTasks") == 0)
2458 trace_filter_load_task_filter(ginfo->hide_tasks, handle, syschild);
2459
2460 syschild = tracecmd_xml_node_next(syschild); 2458 syschild = tracecmd_xml_node_next(syschild);
2461 } while (syschild); 2459 } while (syschild);
2462 2460
@@ -2474,6 +2472,9 @@ int trace_graph_load_filters(struct graph_info *ginfo,
2474 2472
2475 out_free_sys: 2473 out_free_sys:
2476 tracecmd_xml_free_system(system); 2474 tracecmd_xml_free_system(system);
2475 if (ginfo->filter_enabled)
2476 trace_graph_refresh(ginfo);
2477
2477 return -1; 2478 return -1;
2478} 2479}
2479 2480
@@ -2482,7 +2483,7 @@ int trace_graph_save_filters(struct graph_info *ginfo,
2482{ 2483{
2483 struct event_filter *event_filter; 2484 struct event_filter *event_filter;
2484 2485
2485 tracecmd_xml_start_system(handle, "TraceGraph", VERSION_STRING); 2486 tracecmd_xml_start_system(handle, "TraceGraph");
2486 2487
2487 event_filter = ginfo->event_filter; 2488 event_filter = ginfo->event_filter;
2488 2489
@@ -2497,18 +2498,6 @@ int trace_graph_save_filters(struct graph_info *ginfo,
2497 2498
2498 tracecmd_xml_end_sub_system(handle); 2499 tracecmd_xml_end_sub_system(handle);
2499 2500
2500 if (ginfo->task_filter && filter_task_count(ginfo->task_filter)) {
2501 tracecmd_xml_start_sub_system(handle, "TaskFilter");
2502 trace_filter_save_tasks(handle, ginfo->task_filter);
2503 tracecmd_xml_end_sub_system(handle);
2504 }
2505
2506 if (ginfo->hide_tasks && filter_task_count(ginfo->hide_tasks)) {
2507 tracecmd_xml_start_sub_system(handle, "HideTasks");
2508 trace_filter_save_tasks(handle, ginfo->hide_tasks);
2509 tracecmd_xml_end_sub_system(handle);
2510 }
2511
2512 tracecmd_xml_end_system(handle); 2501 tracecmd_xml_end_system(handle);
2513 2502
2514 return 0; 2503 return 0;
diff --git a/trace-view-main.c b/trace-view-main.c
index af9dc5d..e6c0361 100644
--- a/trace-view-main.c
+++ b/trace-view-main.c
@@ -29,9 +29,12 @@
29#include "trace-cmd.h" 29#include "trace-cmd.h"
30#include "trace-view.h" 30#include "trace-view.h"
31#include "trace-xml.h" 31#include "trace-xml.h"
32#include "trace-filter.h"
32#include "trace-gui.h" 33#include "trace-gui.h"
33#include "trace-compat.h" 34#include "trace-compat.h"
34 35
36#include "version.h"
37
35#define version "0.1.1" 38#define version "0.1.1"
36 39
37#define TRACE_WIDTH 800 40#define TRACE_WIDTH 800
@@ -93,12 +96,16 @@ load_filters_clicked (gpointer data)
93 return; 96 return;
94 97
95 handle = tracecmd_xml_open(filename); 98 handle = tracecmd_xml_open(filename);
96 if (!handle) 99 if (!handle) {
97 warning("Could not open %s", filename); 100 warning("Could not open %s", filename);
101 return;
102 }
98 g_free(filename); 103 g_free(filename);
99 104
100 trace_view_load_filters(handle, trace_tree, info->task_filter, 105 trace_filter_load_filters(handle, info->task_filter,
101 info->hide_tasks); 106 info->hide_tasks);
107
108 trace_view_load_filters(handle, trace_tree);
102 109
103 tracecmd_xml_close(handle); 110 tracecmd_xml_close(handle);
104} 111}
@@ -116,13 +123,13 @@ save_filters_clicked (gpointer data)
116 if (!filename) 123 if (!filename)
117 return; 124 return;
118 125
119 handle = tracecmd_xml_create(filename); 126 handle = tracecmd_xml_create(filename, VERSION_STRING);
120 if (!handle) 127 if (!handle)
121 warning("Could not create %s", filename); 128 warning("Could not create %s", filename);
122 g_free(filename); 129 g_free(filename);
123 130
124 trace_view_save_filters(handle, trace_tree, 131 trace_filter_save_filters(handle, info->task_filter, info->hide_tasks);
125 info->task_filter, info->hide_tasks); 132 trace_view_save_filters(handle, trace_tree);
126 133
127 tracecmd_xml_close(handle); 134 tracecmd_xml_close(handle);
128} 135}
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 @@
29#include "trace-local.h" 29#include "trace-local.h"
30#include "trace-view.h" 30#include "trace-view.h"
31#include "trace-compat.h" 31#include "trace-compat.h"
32#include "version.h"
33#include "cpu.h" 32#include "cpu.h"
34#include "util.h" 33#include "util.h"
35 34
@@ -873,9 +872,7 @@ void trace_view_search_setup(GtkBox *box, GtkTreeView *treeview)
873} 872}
874 873
875int trace_view_save_filters(struct tracecmd_xml_handle *handle, 874int trace_view_save_filters(struct tracecmd_xml_handle *handle,
876 GtkTreeView *trace_tree, 875 GtkTreeView *trace_tree)
877 struct filter_task *task_filter,
878 struct filter_task *hide_tasks)
879{ 876{
880 struct event_filter *event_filter; 877 struct event_filter *event_filter;
881 GtkTreeModel *model; 878 GtkTreeModel *model;
@@ -888,7 +885,7 @@ int trace_view_save_filters(struct tracecmd_xml_handle *handle,
888 885
889 store = TRACE_VIEW_STORE(model); 886 store = TRACE_VIEW_STORE(model);
890 887
891 tracecmd_xml_start_system(handle, "TraceView", VERSION_STRING); 888 tracecmd_xml_start_system(handle, "TraceView");
892 889
893 all_events = trace_view_store_get_all_events_enabled(store); 890 all_events = trace_view_store_get_all_events_enabled(store);
894 event_filter = trace_view_store_get_event_filter(store); 891 event_filter = trace_view_store_get_event_filter(store);
@@ -904,18 +901,6 @@ int trace_view_save_filters(struct tracecmd_xml_handle *handle,
904 901
905 tracecmd_xml_end_sub_system(handle); 902 tracecmd_xml_end_sub_system(handle);
906 903
907 if (task_filter && filter_task_count(task_filter)) {
908 tracecmd_xml_start_sub_system(handle, "TaskFilter");
909 trace_filter_save_tasks(handle, task_filter);
910 tracecmd_xml_end_sub_system(handle);
911 }
912
913 if (hide_tasks && filter_task_count(hide_tasks)) {
914 tracecmd_xml_start_sub_system(handle, "HideTasks");
915 trace_filter_save_tasks(handle, hide_tasks);
916 tracecmd_xml_end_sub_system(handle);
917 }
918
919 tracecmd_xml_end_system(handle); 904 tracecmd_xml_end_system(handle);
920 905
921 return 0; 906 return 0;
@@ -954,9 +939,7 @@ static int load_event_filter(TraceViewStore *store,
954} 939}
955 940
956int trace_view_load_filters(struct tracecmd_xml_handle *handle, 941int trace_view_load_filters(struct tracecmd_xml_handle *handle,
957 GtkTreeView *trace_tree, 942 GtkTreeView *trace_tree)
958 struct filter_task *task_filter,
959 struct filter_task *hide_tasks)
960{ 943{
961 struct tracecmd_xml_system *system; 944 struct tracecmd_xml_system *system;
962 struct tracecmd_xml_system_node *syschild; 945 struct tracecmd_xml_system_node *syschild;
@@ -984,12 +967,6 @@ int trace_view_load_filters(struct tracecmd_xml_handle *handle,
984 if (strcmp(name, "EventFilter") == 0) 967 if (strcmp(name, "EventFilter") == 0)
985 load_event_filter(store, handle, syschild); 968 load_event_filter(store, handle, syschild);
986 969
987 else if (strcmp(name, "TaskFilter") == 0)
988 trace_filter_load_task_filter(task_filter, handle, syschild);
989
990 else if (strcmp(name, "HideTasks") == 0)
991 trace_filter_load_task_filter(hide_tasks, handle, syschild);
992
993 syschild = tracecmd_xml_node_next(syschild); 970 syschild = tracecmd_xml_node_next(syschild);
994 } while (syschild); 971 } while (syschild);
995 972
diff --git a/trace-view.h b/trace-view.h
index b0ba7ed..81dac6f 100644
--- a/trace-view.h
+++ b/trace-view.h
@@ -67,12 +67,8 @@ void trace_view_search_setup(GtkBox *box, GtkTreeView *treeview);
67gint trace_view_get_selected_row(GtkWidget *treeview); 67gint trace_view_get_selected_row(GtkWidget *treeview);
68 68
69int trace_view_save_filters(struct tracecmd_xml_handle *handle, 69int trace_view_save_filters(struct tracecmd_xml_handle *handle,
70 GtkTreeView *treeview, 70 GtkTreeView *treeview);
71 struct filter_task *task_filter,
72 struct filter_task *hide_tasks);
73int trace_view_load_filters(struct tracecmd_xml_handle *handle, 71int trace_view_load_filters(struct tracecmd_xml_handle *handle,
74 GtkTreeView *treeview, 72 GtkTreeView *treeview);
75 struct filter_task *task_filter,
76 struct filter_task *hide_tasks);
77 73
78#endif /* _TRACE_VIEW_H */ 74#endif /* _TRACE_VIEW_H */
diff --git a/trace-xml.c b/trace-xml.c
index 47cb3c9..62473fb 100644
--- a/trace-xml.c
+++ b/trace-xml.c
@@ -58,7 +58,8 @@ int tracecmd_xml_write_element(struct tracecmd_xml_handle *handle,
58 return ret; 58 return ret;
59} 59}
60 60
61struct tracecmd_xml_handle *tracecmd_xml_create(const char *name) 61struct tracecmd_xml_handle *tracecmd_xml_create(const char *name,
62 const char *version)
62{ 63{
63 struct tracecmd_xml_handle *handle; 64 struct tracecmd_xml_handle *handle;
64 int ret; 65 int ret;
@@ -75,6 +76,11 @@ struct tracecmd_xml_handle *tracecmd_xml_create(const char *name)
75 if (ret < 0) 76 if (ret < 0)
76 goto fail_close; 77 goto fail_close;
77 78
79 ret = xmlTextWriterStartElement(handle->writer,
80 BAD_CAST "KernelShark");
81 if (ret < 0)
82 goto fail_close;
83
78 return handle; 84 return handle;
79 85
80 fail_close: 86 fail_close:
@@ -85,7 +91,7 @@ struct tracecmd_xml_handle *tracecmd_xml_create(const char *name)
85} 91}
86 92
87int tracecmd_xml_start_system(struct tracecmd_xml_handle *handle, 93int tracecmd_xml_start_system(struct tracecmd_xml_handle *handle,
88 const char *system, const char *version) 94 const char *system)
89{ 95{
90 int ret; 96 int ret;
91 97
@@ -95,10 +101,6 @@ int tracecmd_xml_start_system(struct tracecmd_xml_handle *handle,
95 if (ret < 0) 101 if (ret < 0)
96 return ret; 102 return ret;
97 103
98 ret = tracecmd_xml_write_element(handle, "Version", "%s", version);
99 if (ret < 0)
100 return ret;
101
102 return 0; 104 return 0;
103} 105}
104 106
@@ -126,6 +128,7 @@ void tracecmd_xml_end_sub_system(struct tracecmd_xml_handle *handle)
126void tracecmd_xml_close(struct tracecmd_xml_handle *handle) 128void tracecmd_xml_close(struct tracecmd_xml_handle *handle)
127{ 129{
128 if (handle->writer) { 130 if (handle->writer) {
131 xmlTextWriterEndElement(handle->writer);
129 xmlTextWriterEndDocument(handle->writer); 132 xmlTextWriterEndDocument(handle->writer);
130 xmlFreeTextWriter(handle->writer); 133 xmlFreeTextWriter(handle->writer);
131 } 134 }
diff --git a/trace-xml.h b/trace-xml.h
index 4006538..f84907d 100644
--- a/trace-xml.h
+++ b/trace-xml.h
@@ -25,12 +25,12 @@ struct tracecmd_xml_handle;
25struct tacecmd_xml_system; 25struct tacecmd_xml_system;
26struct tacecmd_xml_system_node; 26struct tacecmd_xml_system_node;
27 27
28struct tracecmd_xml_handle *tracecmd_xml_create(const char *name); 28struct tracecmd_xml_handle *tracecmd_xml_create(const char *name, const char *version);
29struct tracecmd_xml_handle *tracecmd_xml_open(const char *name); 29struct tracecmd_xml_handle *tracecmd_xml_open(const char *name);
30void tracecmd_xml_close(struct tracecmd_xml_handle *handle); 30void tracecmd_xml_close(struct tracecmd_xml_handle *handle);
31 31
32int tracecmd_xml_start_system(struct tracecmd_xml_handle *handle, 32int tracecmd_xml_start_system(struct tracecmd_xml_handle *handle,
33 const char *system, const char *version); 33 const char *system);
34void tracecmd_xml_end_system(struct tracecmd_xml_handle *handle); 34void tracecmd_xml_end_system(struct tracecmd_xml_handle *handle);
35 35
36int tracecmd_xml_start_sub_system(struct tracecmd_xml_handle *handle, 36int tracecmd_xml_start_sub_system(struct tracecmd_xml_handle *handle,