diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-01-05 22:29:24 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-01-05 22:29:24 -0500 |
commit | a7de507ed72ec2a0bbe6b19b9ff1cb09e98c6713 (patch) | |
tree | c83a6cd1f99454bb687002abcb94cc4987f0c82b | |
parent | ae5af61c2293dcea7f070a3bbb9518152d6a93af (diff) | |
parent | cacc655df9360e74a02561312da0bb78fdbae38c (diff) |
Merge branch 'for-rostedt/trace-view' of git://git.kernel.org/pub/scm/linux/kernel/git/dvhart/trace-cmd into dvhart-temp
-rw-r--r-- | Makefile | 21 | ||||
-rw-r--r-- | kernel-shark.c | 10 | ||||
-rw-r--r-- | trace-view-store.c | 29 | ||||
-rw-r--r-- | trace-view-store.h | 4 | ||||
-rw-r--r-- | trace-view.c | 7 |
5 files changed, 27 insertions, 44 deletions
@@ -129,21 +129,24 @@ plugin_mac80211.so: plugin_mac80211.o | |||
129 | $(CC) -shared -nostartfiles -o $@ $< | 129 | $(CC) -shared -nostartfiles -o $@ $< |
130 | 130 | ||
131 | 131 | ||
132 | .PHONY: python | 132 | PYTHON_INCLUDES = `python-config --includes` |
133 | python: $(TCMD_LIB_OBJS) | 133 | PYGTK_CFLAGS = `pkg-config --cflags pygtk-2.0` |
134 | |||
135 | ctracecmd.so: $(TCMD_LIB_OBJS) | ||
134 | swig -Wall -python -noproxy ctracecmd.i | 136 | swig -Wall -python -noproxy ctracecmd.i |
135 | #swig -Wall -python ctracecmd.i | 137 | gcc -fpic -c $(PYTHON_INCLUDES) ctracecmd_wrap.c |
136 | gcc -fpic -c `python-config --includes` ctracecmd_wrap.c | ||
137 | $(CC) --shared $^ ctracecmd_wrap.o -o ctracecmd.so | 138 | $(CC) --shared $^ ctracecmd_wrap.o -o ctracecmd.so |
138 | #$(CC) --shared $^ ctracecmd_wrap.o -o _ctracecmd.so | ||
139 | 139 | ||
140 | .PHONY: python-gui | 140 | ctracecmdgui.so: $(TRACE_VIEW_OBJS) $(LIB_FILE) |
141 | python-gui: $(TRACE_VIEW_OBJS) | ||
142 | swig -Wall -python -noproxy ctracecmdgui.i | 141 | swig -Wall -python -noproxy ctracecmdgui.i |
143 | # FIXME: where do we get the pygtk include from? | 142 | gcc -fpic -c $(CFLAGS) $(INCLUDES) $(PYTHON_INCLUDES) $(PYGTK_CFLAGS) ctracecmdgui_wrap.c |
144 | gcc -fpic -c `python-config --includes` $(CFLAGS) $(INCLUDES) -I/usr/include/pygtk-2.0/ ctracecmdgui_wrap.c | ||
145 | $(CC) --shared $^ $(LIBS) $(CONFIG_LIBS) ctracecmdgui_wrap.o -o ctracecmdgui.so | 143 | $(CC) --shared $^ $(LIBS) $(CONFIG_LIBS) ctracecmdgui_wrap.o -o ctracecmdgui.so |
146 | 144 | ||
145 | .PHONY: python | ||
146 | python: ctracecmd.so | ||
147 | |||
148 | .PHONY: python-gui | ||
149 | python-gui: ctracecmd.so ctracecmdgui.so | ||
147 | 150 | ||
148 | .PHONY: force | 151 | .PHONY: force |
149 | force: | 152 | force: |
diff --git a/kernel-shark.c b/kernel-shark.c index fbc5a5f..a55fc8a 100644 --- a/kernel-shark.c +++ b/kernel-shark.c | |||
@@ -137,6 +137,7 @@ static void row_double_clicked(GtkTreeView *treeview, | |||
137 | gpointer data) | 137 | gpointer data) |
138 | { | 138 | { |
139 | struct shark_info *info = data; | 139 | struct shark_info *info = data; |
140 | TraceViewRecord *rec; | ||
140 | GtkTreeModel *model; | 141 | GtkTreeModel *model; |
141 | gchar *spath; | 142 | gchar *spath; |
142 | guint64 time; | 143 | guint64 time; |
@@ -151,7 +152,8 @@ static void row_double_clicked(GtkTreeView *treeview, | |||
151 | row = atoi(spath); | 152 | row = atoi(spath); |
152 | g_free(spath); | 153 | g_free(spath); |
153 | 154 | ||
154 | time = trace_view_store_get_time_from_row(TRACE_VIEW_STORE(model), row); | 155 | rec = trace_view_store_get_row(TRACE_VIEW_STORE(model), row); |
156 | time = rec->timestamp; | ||
155 | trace_graph_select_by_time(info->ginfo, time); | 157 | trace_graph_select_by_time(info->ginfo, time); |
156 | } | 158 | } |
157 | 159 | ||
@@ -220,7 +222,7 @@ do_tree_popup(GtkWidget *widget, GdkEventButton *event, gpointer data) | |||
220 | static GtkWidget *menu_filter_add_task; | 222 | static GtkWidget *menu_filter_add_task; |
221 | static GtkWidget *menu_filter_clear_tasks; | 223 | static GtkWidget *menu_filter_clear_tasks; |
222 | struct record *record; | 224 | struct record *record; |
223 | TraceViewStore *store; | 225 | TraceViewRecord *vrec; |
224 | GtkTreeSelection *selection; | 226 | GtkTreeSelection *selection; |
225 | GtkTreeModel *model; | 227 | GtkTreeModel *model; |
226 | GtkTreePath *path; | 228 | GtkTreePath *path; |
@@ -281,8 +283,8 @@ do_tree_popup(GtkWidget *widget, GdkEventButton *event, gpointer data) | |||
281 | g_free(spath); | 283 | g_free(spath); |
282 | 284 | ||
283 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(info->treeview)); | 285 | model = gtk_tree_view_get_model(GTK_TREE_VIEW(info->treeview)); |
284 | store = TRACE_VIEW_STORE(model); | 286 | vrec = trace_view_store_get_row(TRACE_VIEW_STORE(model), row); |
285 | offset = trace_view_store_get_offset_from_row(store, row); | 287 | offset = vrec->offset; |
286 | 288 | ||
287 | record = tracecmd_read_at(info->handle, offset, &cpu); | 289 | record = tracecmd_read_at(info->handle, offset, &cpu); |
288 | 290 | ||
diff --git a/trace-view-store.c b/trace-view-store.c index 5ae3a00..9ad2073 100644 --- a/trace-view-store.c +++ b/trace-view-store.c | |||
@@ -1219,37 +1219,16 @@ gint trace_view_store_get_timestamp_page(TraceViewStore *store, guint64 ts) | |||
1219 | return rec->pos / store->rows_per_page + 1; | 1219 | return rec->pos / store->rows_per_page + 1; |
1220 | } | 1220 | } |
1221 | 1221 | ||
1222 | guint64 trace_view_store_get_time_from_row(TraceViewStore *store, gint row) | ||
1223 | { | ||
1224 | g_return_val_if_fail (TRACE_VIEW_IS_LIST (store), 0); | ||
1225 | |||
1226 | row += store->start_row; | ||
1227 | |||
1228 | g_return_val_if_fail (row >= 0 && row < store->visible_rows, 0); | ||
1229 | |||
1230 | return store->rows[row]->timestamp; | ||
1231 | } | ||
1232 | |||
1233 | guint64 trace_view_store_get_offset_from_row(TraceViewStore *store, gint row) | ||
1234 | { | ||
1235 | g_return_val_if_fail (TRACE_VIEW_IS_LIST (store), 0); | ||
1236 | |||
1237 | row += store->start_row; | ||
1238 | |||
1239 | g_return_val_if_fail (row >= 0 && row < store->visible_rows, 0); | ||
1240 | |||
1241 | return store->rows[row]->offset; | ||
1242 | } | ||
1243 | |||
1244 | TraceViewRecord * | 1222 | TraceViewRecord * |
1245 | trace_view_store_get_row(TraceViewStore *store, gint row) | 1223 | trace_view_store_get_row(TraceViewStore *store, gint row) |
1246 | { | 1224 | { |
1247 | TraceViewRecord *record; | 1225 | TraceViewRecord *record; |
1226 | g_return_val_if_fail(TRACE_VIEW_IS_LIST(store), NULL); | ||
1248 | 1227 | ||
1249 | if (row >= store->num_rows || row < 0) | 1228 | row += store->start_row; |
1250 | return NULL; | 1229 | g_return_val_if_fail(row >= store->start_row && row < store->visible_rows, NULL); |
1251 | 1230 | ||
1252 | record = store->rows[store->start_row + row]; | 1231 | record = store->rows[row]; |
1253 | g_assert(record != NULL); | 1232 | g_assert(record != NULL); |
1254 | g_assert((record->pos - store->start_row) == row); | 1233 | g_assert((record->pos - store->start_row) == row); |
1255 | return record; | 1234 | return record; |
diff --git a/trace-view-store.h b/trace-view-store.h index f6825bc..60f90a5 100644 --- a/trace-view-store.h +++ b/trace-view-store.h | |||
@@ -120,10 +120,6 @@ gint trace_view_store_get_timestamp_page(TraceViewStore *store, guint64 ts); | |||
120 | 120 | ||
121 | gint trace_view_store_get_timestamp_visible_row(TraceViewStore *store, guint64 ts); | 121 | gint trace_view_store_get_timestamp_visible_row(TraceViewStore *store, guint64 ts); |
122 | 122 | ||
123 | guint64 trace_view_store_get_time_from_row(TraceViewStore *store, gint row); | ||
124 | |||
125 | guint64 trace_view_store_get_offset_from_row(TraceViewStore *store, gint row); | ||
126 | |||
127 | void trace_view_store_filter_tasks(TraceViewStore *store, struct filter_task *filter); | 123 | void trace_view_store_filter_tasks(TraceViewStore *store, struct filter_task *filter); |
128 | 124 | ||
129 | TraceViewRecord *trace_view_store_get_row(TraceViewStore *store, gint row); | 125 | TraceViewRecord *trace_view_store_get_row(TraceViewStore *store, gint row); |
diff --git a/trace-view.c b/trace-view.c index 3c023e5..899b3b3 100644 --- a/trace-view.c +++ b/trace-view.c | |||
@@ -271,6 +271,7 @@ void trace_view_make_selection_visible(GtkWidget *treeview) | |||
271 | void trace_view_update_task_filter(GtkWidget *treeview, struct filter_task *filter) | 271 | void trace_view_update_task_filter(GtkWidget *treeview, struct filter_task *filter) |
272 | { | 272 | { |
273 | GtkTreeView *tree = GTK_TREE_VIEW(treeview); | 273 | GtkTreeView *tree = GTK_TREE_VIEW(treeview); |
274 | TraceViewRecord *vrec; | ||
274 | GtkTreeModel *model; | 275 | GtkTreeModel *model; |
275 | guint64 time; | 276 | guint64 time; |
276 | gint row; | 277 | gint row; |
@@ -281,8 +282,10 @@ void trace_view_update_task_filter(GtkWidget *treeview, struct filter_task *filt | |||
281 | 282 | ||
282 | /* Keep track of the currently selected row */ | 283 | /* Keep track of the currently selected row */ |
283 | row = trace_view_get_selected_row(treeview); | 284 | row = trace_view_get_selected_row(treeview); |
284 | if (row >= 0) | 285 | if (row >= 0) { |
285 | time = trace_view_store_get_time_from_row(TRACE_VIEW_STORE(model), row); | 286 | vrec = trace_view_store_get_row(TRACE_VIEW_STORE(model), row); |
287 | time = vrec->timestamp; | ||
288 | } | ||
286 | 289 | ||
287 | g_object_ref(model); | 290 | g_object_ref(model); |
288 | gtk_tree_view_set_model(tree, NULL); | 291 | gtk_tree_view_set_model(tree, NULL); |