diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-06-10 17:53:51 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-06-10 17:53:51 -0400 |
commit | 3c95290d3fb593145b8ce1163d795a08f05e112c (patch) | |
tree | e6fc1bea660993e4eaaf5b716bef577d6fbf692e /trace-view.c | |
parent | d01b699fffc573e7653e00d608444735c04f9dca (diff) | |
parent | b09e5f4f3fc5c8fc2c51376050af19660c8053f4 (diff) |
Merge branch 'kernelshark-devel' into trace-cmd
Conflicts:
Makefile
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'trace-view.c')
-rw-r--r-- | trace-view.c | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/trace-view.c b/trace-view.c index 59e7e1a..8d121d1 100644 --- a/trace-view.c +++ b/trace-view.c | |||
@@ -870,3 +870,112 @@ void trace_view_search_setup(GtkBox *box, GtkTreeView *treeview) | |||
870 | G_CALLBACK (search_tree), | 870 | G_CALLBACK (search_tree), |
871 | (gpointer) info); | 871 | (gpointer) info); |
872 | } | 872 | } |
873 | |||
874 | int trace_view_save_filters(struct tracecmd_xml_handle *handle, | ||
875 | GtkTreeView *trace_tree) | ||
876 | { | ||
877 | struct event_filter *event_filter; | ||
878 | GtkTreeModel *model; | ||
879 | TraceViewStore *store; | ||
880 | gboolean all_events; | ||
881 | |||
882 | model = gtk_tree_view_get_model(trace_tree); | ||
883 | if (!model) | ||
884 | return -1; | ||
885 | |||
886 | store = TRACE_VIEW_STORE(model); | ||
887 | |||
888 | tracecmd_xml_start_system(handle, "TraceView"); | ||
889 | |||
890 | all_events = trace_view_store_get_all_events_enabled(store); | ||
891 | event_filter = trace_view_store_get_event_filter(store); | ||
892 | |||
893 | tracecmd_xml_start_sub_system(handle, "EventFilter"); | ||
894 | |||
895 | if (all_events || !event_filter) | ||
896 | tracecmd_xml_write_element(handle, "FilterType", "all events"); | ||
897 | else { | ||
898 | tracecmd_xml_write_element(handle, "FilterType", "filter"); | ||
899 | trace_filter_save_events(handle, event_filter); | ||
900 | } | ||
901 | |||
902 | tracecmd_xml_end_sub_system(handle); | ||
903 | |||
904 | tracecmd_xml_end_system(handle); | ||
905 | |||
906 | return 0; | ||
907 | } | ||
908 | |||
909 | static int load_event_filter(TraceViewStore *store, | ||
910 | struct tracecmd_xml_handle *handle, | ||
911 | struct tracecmd_xml_system_node *node) | ||
912 | { | ||
913 | struct tracecmd_xml_system_node *child; | ||
914 | struct event_filter *event_filter; | ||
915 | const char *name; | ||
916 | const char *value; | ||
917 | |||
918 | event_filter = trace_view_store_get_event_filter(store); | ||
919 | |||
920 | child = tracecmd_xml_node_child(node); | ||
921 | name = tracecmd_xml_node_type(child); | ||
922 | if (strcmp(name, "FilterType") != 0) | ||
923 | return -1; | ||
924 | |||
925 | value = tracecmd_xml_node_value(handle, child); | ||
926 | /* Do nothing with all events enabled */ | ||
927 | if (strcmp(value, "all events") == 0) | ||
928 | return 0; | ||
929 | |||
930 | node = tracecmd_xml_node_next(child); | ||
931 | if (!node) | ||
932 | return -1; | ||
933 | |||
934 | trace_view_store_clear_all_events_enabled(store); | ||
935 | |||
936 | trace_filter_load_events(event_filter, handle, node); | ||
937 | |||
938 | return 0; | ||
939 | } | ||
940 | |||
941 | int trace_view_load_filters(struct tracecmd_xml_handle *handle, | ||
942 | GtkTreeView *trace_tree) | ||
943 | { | ||
944 | struct tracecmd_xml_system *system; | ||
945 | struct tracecmd_xml_system_node *syschild; | ||
946 | GtkTreeModel *model; | ||
947 | TraceViewStore *store; | ||
948 | const char *name; | ||
949 | |||
950 | model = gtk_tree_view_get_model(trace_tree); | ||
951 | if (!model) | ||
952 | return -1; | ||
953 | |||
954 | store = TRACE_VIEW_STORE(model); | ||
955 | |||
956 | system = tracecmd_xml_find_system(handle, "TraceView"); | ||
957 | if (!system) | ||
958 | return -1; | ||
959 | |||
960 | syschild = tracecmd_xml_system_node(system); | ||
961 | if (!syschild) | ||
962 | goto out_free_sys; | ||
963 | |||
964 | do { | ||
965 | name = tracecmd_xml_node_type(syschild); | ||
966 | |||
967 | if (strcmp(name, "EventFilter") == 0) | ||
968 | load_event_filter(store, handle, syschild); | ||
969 | |||
970 | syschild = tracecmd_xml_node_next(syschild); | ||
971 | } while (syschild); | ||
972 | |||
973 | tracecmd_xml_free_system(system); | ||
974 | |||
975 | update_rows(trace_tree, store); | ||
976 | return 0; | ||
977 | |||
978 | out_free_sys: | ||
979 | tracecmd_xml_free_system(system); | ||
980 | return -1; | ||
981 | } | ||