diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-04-05 22:40:54 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-04-09 11:56:18 -0400 |
commit | 20359fdc358744dee36b8e59c234e965fc7d2a69 (patch) | |
tree | d8069b706c554939cf40a9b9b8485826afb4b7c6 | |
parent | 338a694c0002d70349de3f0e7e47322467f72765 (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.c | 21 | ||||
-rw-r--r-- | trace-filter.c | 62 | ||||
-rw-r--r-- | trace-filter.h | 6 | ||||
-rw-r--r-- | trace-graph-main.c | 10 | ||||
-rw-r--r-- | trace-graph.c | 31 | ||||
-rw-r--r-- | trace-view-main.c | 19 | ||||
-rw-r--r-- | trace-view.c | 29 | ||||
-rw-r--r-- | trace-view.h | 8 | ||||
-rw-r--r-- | trace-xml.c | 15 | ||||
-rw-r--r-- | trace-xml.h | 4 |
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 | |||
2331 | int 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 | |||
2369 | int 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, | |||
148 | int trace_filter_load_task_filter(struct filter_task *filter, | 148 | int 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); |
151 | int trace_filter_load_filters(struct tracecmd_xml_handle *handle, | ||
152 | struct filter_task *task_filter, | ||
153 | struct filter_task *hide_tasks); | ||
154 | int 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 | ||
875 | int trace_view_save_filters(struct tracecmd_xml_handle *handle, | 874 | int 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 | ||
956 | int trace_view_load_filters(struct tracecmd_xml_handle *handle, | 941 | int 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); | |||
67 | gint trace_view_get_selected_row(GtkWidget *treeview); | 67 | gint trace_view_get_selected_row(GtkWidget *treeview); |
68 | 68 | ||
69 | int trace_view_save_filters(struct tracecmd_xml_handle *handle, | 69 | int 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); | ||
73 | int trace_view_load_filters(struct tracecmd_xml_handle *handle, | 71 | int 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 | ||
61 | struct tracecmd_xml_handle *tracecmd_xml_create(const char *name) | 61 | struct 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 | ||
87 | int tracecmd_xml_start_system(struct tracecmd_xml_handle *handle, | 93 | int 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) | |||
126 | void tracecmd_xml_close(struct tracecmd_xml_handle *handle) | 128 | void 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; | |||
25 | struct tacecmd_xml_system; | 25 | struct tacecmd_xml_system; |
26 | struct tacecmd_xml_system_node; | 26 | struct tacecmd_xml_system_node; |
27 | 27 | ||
28 | struct tracecmd_xml_handle *tracecmd_xml_create(const char *name); | 28 | struct tracecmd_xml_handle *tracecmd_xml_create(const char *name, const char *version); |
29 | struct tracecmd_xml_handle *tracecmd_xml_open(const char *name); | 29 | struct tracecmd_xml_handle *tracecmd_xml_open(const char *name); |
30 | void tracecmd_xml_close(struct tracecmd_xml_handle *handle); | 30 | void tracecmd_xml_close(struct tracecmd_xml_handle *handle); |
31 | 31 | ||
32 | int tracecmd_xml_start_system(struct tracecmd_xml_handle *handle, | 32 | int tracecmd_xml_start_system(struct tracecmd_xml_handle *handle, |
33 | const char *system, const char *version); | 33 | const char *system); |
34 | void tracecmd_xml_end_system(struct tracecmd_xml_handle *handle); | 34 | void tracecmd_xml_end_system(struct tracecmd_xml_handle *handle); |
35 | 35 | ||
36 | int tracecmd_xml_start_sub_system(struct tracecmd_xml_handle *handle, | 36 | int tracecmd_xml_start_sub_system(struct tracecmd_xml_handle *handle, |