aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2010-01-05 22:29:24 -0500
committerSteven Rostedt <rostedt@goodmis.org>2010-01-05 22:29:24 -0500
commita7de507ed72ec2a0bbe6b19b9ff1cb09e98c6713 (patch)
treec83a6cd1f99454bb687002abcb94cc4987f0c82b
parentae5af61c2293dcea7f070a3bbb9518152d6a93af (diff)
parentcacc655df9360e74a02561312da0bb78fdbae38c (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--Makefile21
-rw-r--r--kernel-shark.c10
-rw-r--r--trace-view-store.c29
-rw-r--r--trace-view-store.h4
-rw-r--r--trace-view.c7
5 files changed, 27 insertions, 44 deletions
diff --git a/Makefile b/Makefile
index 3d17256..4826dd1 100644
--- a/Makefile
+++ b/Makefile
@@ -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 132PYTHON_INCLUDES = `python-config --includes`
133python: $(TCMD_LIB_OBJS) 133PYGTK_CFLAGS = `pkg-config --cflags pygtk-2.0`
134
135ctracecmd.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 140ctracecmdgui.so: $(TRACE_VIEW_OBJS) $(LIB_FILE)
141python-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
146python: ctracecmd.so
147
148.PHONY: python-gui
149python-gui: ctracecmd.so ctracecmdgui.so
147 150
148.PHONY: force 151.PHONY: force
149force: 152force:
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
1222guint64 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
1233guint64 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
1244TraceViewRecord * 1222TraceViewRecord *
1245trace_view_store_get_row(TraceViewStore *store, gint row) 1223trace_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
121gint trace_view_store_get_timestamp_visible_row(TraceViewStore *store, guint64 ts); 121gint trace_view_store_get_timestamp_visible_row(TraceViewStore *store, guint64 ts);
122 122
123guint64 trace_view_store_get_time_from_row(TraceViewStore *store, gint row);
124
125guint64 trace_view_store_get_offset_from_row(TraceViewStore *store, gint row);
126
127void trace_view_store_filter_tasks(TraceViewStore *store, struct filter_task *filter); 123void trace_view_store_filter_tasks(TraceViewStore *store, struct filter_task *filter);
128 124
129TraceViewRecord *trace_view_store_get_row(TraceViewStore *store, gint row); 125TraceViewRecord *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)
271void trace_view_update_task_filter(GtkWidget *treeview, struct filter_task *filter) 271void 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);