diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-03-29 16:23:26 -0400 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-03-29 16:23:26 -0400 |
commit | f340ebe290d85f6aae234b44ca43aecb106c1e75 (patch) | |
tree | 4d0ca8c1fa82ca3aafa8463806e0995844d87fea | |
parent | 6c6d6b6ff8ad6cb08d57232ca8ae0ba0261ac823 (diff) |
rt-graph: cleanup of interface
-rw-r--r-- | kernel-shark.c | 102 | ||||
-rw-r--r-- | rt-graph.c | 2 | ||||
-rw-r--r-- | rt-plot-task.c | 4 | ||||
-rw-r--r-- | rt-plot.c | 27 |
4 files changed, 74 insertions, 61 deletions
diff --git a/kernel-shark.c b/kernel-shark.c index 6b6cdd4..924bcc8 100644 --- a/kernel-shark.c +++ b/kernel-shark.c | |||
@@ -2401,80 +2401,80 @@ void kernel_shark(int argc, char **argv) | |||
2401 | gtk_widget_show(widget); | 2401 | gtk_widget_show(widget); |
2402 | 2402 | ||
2403 | 2403 | ||
2404 | /* --- Tree View Vbox --- */ | 2404 | /* /\* --- Tree View Vbox --- *\/ */ |
2405 | 2405 | ||
2406 | vbox2 = gtk_vbox_new(FALSE, 0); | 2406 | /* vbox2 = gtk_vbox_new(FALSE, 0); */ |
2407 | gtk_paned_add2(GTK_PANED(vpaned), vbox2); | 2407 | /* gtk_paned_add2(GTK_PANED(vpaned), vbox2); */ |
2408 | gtk_widget_show(vbox2); | 2408 | /* gtk_widget_show(vbox2); */ |
2409 | 2409 | ||
2410 | /* --- Paging Hbox --- */ | 2410 | /* /\* --- Paging Hbox --- *\/ */ |
2411 | 2411 | ||
2412 | hbox = gtk_hbox_new(FALSE, 0); | 2412 | /* hbox = gtk_hbox_new(FALSE, 0); */ |
2413 | gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); | 2413 | /* gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); */ |
2414 | gtk_widget_show(hbox); | 2414 | /* gtk_widget_show(hbox); */ |
2415 | 2415 | ||
2416 | /* --- Page Spin Button --- */ | 2416 | /* /\* --- Page Spin Button --- *\/ */ |
2417 | 2417 | ||
2418 | label = gtk_label_new("Page"); | 2418 | /* label = gtk_label_new("Page"); */ |
2419 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | 2419 | /* gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); */ |
2420 | gtk_widget_show(label); | 2420 | /* gtk_widget_show(label); */ |
2421 | 2421 | ||
2422 | spin = gtk_spin_button_new(NULL, 1.0, 0); | 2422 | /* spin = gtk_spin_button_new(NULL, 1.0, 0); */ |
2423 | gtk_spin_button_set_range(GTK_SPIN_BUTTON(spin), 1, 1); | 2423 | /* gtk_spin_button_set_range(GTK_SPIN_BUTTON(spin), 1, 1); */ |
2424 | gtk_box_pack_start(GTK_BOX(hbox), spin, FALSE, FALSE, 0); | 2424 | /* gtk_box_pack_start(GTK_BOX(hbox), spin, FALSE, FALSE, 0); */ |
2425 | gtk_widget_show(spin); | 2425 | /* gtk_widget_show(spin); */ |
2426 | 2426 | ||
2427 | info->spin = spin; | 2427 | /* info->spin = spin; */ |
2428 | 2428 | ||
2429 | /* --- Search --- */ | 2429 | /* /\* --- Search --- *\/ */ |
2430 | 2430 | ||
2431 | /* The tree needs its columns loaded now */ | 2431 | /* /\* The tree needs its columns loaded now *\/ */ |
2432 | info->treeview = gtk_tree_view_new(); | 2432 | /* info->treeview = gtk_tree_view_new(); */ |
2433 | trace_view_load(info->treeview, handle, spin); | 2433 | /* trace_view_load(info->treeview, handle, spin); */ |
2434 | 2434 | ||
2435 | label = gtk_label_new(" Search: "); | 2435 | /* label = gtk_label_new(" Search: "); */ |
2436 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | 2436 | /* gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); */ |
2437 | gtk_widget_show(label); | 2437 | /* gtk_widget_show(label); */ |
2438 | 2438 | ||
2439 | trace_view_search_setup(GTK_BOX(hbox), GTK_TREE_VIEW(info->treeview)); | 2439 | /* trace_view_search_setup(GTK_BOX(hbox), GTK_TREE_VIEW(info->treeview)); */ |
2440 | 2440 | ||
2441 | check = gtk_check_button_new_with_label("graph follows"); | 2441 | /* check = gtk_check_button_new_with_label("graph follows"); */ |
2442 | gtk_box_pack_start(GTK_BOX(hbox), check, TRUE, TRUE, 0); | 2442 | /* gtk_box_pack_start(GTK_BOX(hbox), check, TRUE, TRUE, 0); */ |
2443 | gtk_widget_show(check); | 2443 | /* gtk_widget_show(check); */ |
2444 | 2444 | ||
2445 | g_signal_connect_swapped (check, "toggled", | 2445 | /* g_signal_connect_swapped (check, "toggled", */ |
2446 | G_CALLBACK (graph_check_toggle), | 2446 | /* G_CALLBACK (graph_check_toggle), */ |
2447 | (gpointer) info); | 2447 | /* (gpointer) info); */ |
2448 | 2448 | ||
2449 | 2449 | ||
2450 | /* --- Top Level Trace View Paging Hbox --- */ | 2450 | /* /\* --- Top Level Trace View Paging Hbox --- *\/ */ |
2451 | 2451 | ||
2452 | hbox = gtk_hbox_new(FALSE, 0); | 2452 | /* hbox = gtk_hbox_new(FALSE, 0); */ |
2453 | gtk_box_pack_start(GTK_BOX(vbox2), hbox, TRUE, TRUE, 0); | 2453 | /* gtk_box_pack_start(GTK_BOX(vbox2), hbox, TRUE, TRUE, 0); */ |
2454 | gtk_widget_show(hbox); | 2454 | /* gtk_widget_show(hbox); */ |
2455 | 2455 | ||
2456 | /* --- Scroll Window --- */ | 2456 | /* /\* --- Scroll Window --- *\/ */ |
2457 | scrollwin = gtk_scrolled_window_new(NULL, NULL); | 2457 | /* scrollwin = gtk_scrolled_window_new(NULL, NULL); */ |
2458 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), | 2458 | /* gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), */ |
2459 | GTK_POLICY_AUTOMATIC, | 2459 | /* GTK_POLICY_AUTOMATIC, */ |
2460 | GTK_POLICY_AUTOMATIC); | 2460 | /* GTK_POLICY_AUTOMATIC); */ |
2461 | gtk_box_pack_start(GTK_BOX (hbox), scrollwin, TRUE, TRUE, 0); | 2461 | /* gtk_box_pack_start(GTK_BOX (hbox), scrollwin, TRUE, TRUE, 0); */ |
2462 | gtk_widget_show(scrollwin); | 2462 | /* gtk_widget_show(scrollwin); */ |
2463 | 2463 | ||
2464 | /* --- Set up Trace Tree --- */ | 2464 | /* /\* --- Set up Trace Tree --- *\/ */ |
2465 | 2465 | ||
2466 | g_signal_connect(info->treeview, "row-activated", | 2466 | /* g_signal_connect(info->treeview, "row-activated", */ |
2467 | (GCallback)row_double_clicked, info); | 2467 | /* (GCallback)row_double_clicked, info); */ |
2468 | 2468 | ||
2469 | g_signal_connect(info->treeview, "cursor-changed", | 2469 | /* g_signal_connect(info->treeview, "cursor-changed", */ |
2470 | (GCallback)cursor_changed, info); | 2470 | /* (GCallback)cursor_changed, info); */ |
2471 | 2471 | ||
2472 | gtk_container_add(GTK_CONTAINER(scrollwin), info->treeview); | 2472 | /* gtk_container_add(GTK_CONTAINER(scrollwin), info->treeview); */ |
2473 | 2473 | ||
2474 | gtk_signal_connect(GTK_OBJECT(info->treeview), "button_press_event", | 2474 | /* gtk_signal_connect(GTK_OBJECT(info->treeview), "button_press_event", */ |
2475 | (GtkSignalFunc) button_press_event, info); | 2475 | /* (GtkSignalFunc) button_press_event, info); */ |
2476 | 2476 | ||
2477 | gtk_widget_show(info->treeview); | 2477 | /* gtk_widget_show(info->treeview); */ |
2478 | 2478 | ||
2479 | /* --- Set up Status Bar --- */ | 2479 | /* --- Set up Status Bar --- */ |
2480 | 2480 | ||
@@ -462,6 +462,7 @@ int rt_graph_check_task_block(struct graph_info *ginfo, | |||
462 | if (!event) | 462 | if (!event) |
463 | goto out; | 463 | goto out; |
464 | dprintf(2, "Found task_block id %d\n", event->id); | 464 | dprintf(2, "Found task_block id %d\n", event->id); |
465 | rtg_info->task_block_id = event->id; | ||
465 | STORE_FIELD(rtg_info, event, block, pid); | 466 | STORE_FIELD(rtg_info, event, block, pid); |
466 | } | 467 | } |
467 | 468 | ||
@@ -498,6 +499,7 @@ int rt_graph_check_task_resume(struct graph_info *ginfo, | |||
498 | if (!event) | 499 | if (!event) |
499 | goto out; | 500 | goto out; |
500 | dprintf(2, "Found task_resume id %d\n", event->id); | 501 | dprintf(2, "Found task_resume id %d\n", event->id); |
502 | rtg_info->task_resume_id = event->id; | ||
501 | STORE_FIELD(rtg_info, event, resume, pid); | 503 | STORE_FIELD(rtg_info, event, resume, pid); |
502 | } | 504 | } |
503 | 505 | ||
diff --git a/rt-plot-task.c b/rt-plot-task.c index 56c3c28..de5d2a7 100644 --- a/rt-plot-task.c +++ b/rt-plot-task.c | |||
@@ -3,7 +3,7 @@ | |||
3 | #include "trace-graph.h" | 3 | #include "trace-graph.h" |
4 | #include "trace-filter.h" | 4 | #include "trace-filter.h" |
5 | 5 | ||
6 | #define DEBUG_LEVEL 1 | 6 | #define DEBUG_LEVEL 5 |
7 | #if DEBUG_LEVEL > 0 | 7 | #if DEBUG_LEVEL > 0 |
8 | #define dprintf(l, x...) \ | 8 | #define dprintf(l, x...) \ |
9 | do { \ | 9 | do { \ |
@@ -219,6 +219,8 @@ static int try_block(struct graph_info *ginfo, struct rt_task_info *rtt_info, | |||
219 | dprintf(3, "Block for %d on %d at %llu\n", | 219 | dprintf(3, "Block for %d on %d at %llu\n", |
220 | pid, record->cpu, ts); | 220 | pid, record->cpu, ts); |
221 | ret = 1; | 221 | ret = 1; |
222 | } else { | ||
223 | dprintf(3, "%d does not match my pid %d\n", pid, rtt_info->pid); | ||
222 | } | 224 | } |
223 | return ret; | 225 | return ret; |
224 | } | 226 | } |
@@ -71,6 +71,9 @@ rt_plot_display_last_event(struct graph_info *ginfo, struct graph_plot *plot, | |||
71 | return 1; | 71 | return 1; |
72 | } | 72 | } |
73 | 73 | ||
74 | /* | ||
75 | * Return first displayed record before @time, abandoning search after @range. | ||
76 | */ | ||
74 | static struct record* | 77 | static struct record* |
75 | find_prev_display_record(struct graph_info *ginfo, struct rt_plot_common *rt_info, | 78 | find_prev_display_record(struct graph_info *ginfo, struct rt_plot_common *rt_info, |
76 | unsigned long long time, unsigned long long range) | 79 | unsigned long long time, unsigned long long range) |
@@ -120,15 +123,17 @@ rt_plot_display_info(struct graph_info *ginfo, struct graph_plot *plot, | |||
120 | { | 123 | { |
121 | struct rt_plot_common *rt_info = plot->private; | 124 | struct rt_plot_common *rt_info = plot->private; |
122 | struct event_format *event; | 125 | struct event_format *event; |
123 | struct record *record, *prev_record; | 126 | struct record *record, *prev_record, *data_record; |
124 | unsigned long long msec, nsec, rts, ptime, rtime, range; | 127 | unsigned long long msec, nsec, rts, ptime, rtime, range; |
125 | long long pdiff, rdiff; | 128 | long long pdiff, rdiff; |
126 | int eid; | 129 | int eid; |
127 | 130 | ||
128 | rt_info->write_header(rt_info, ginfo, s, time); | 131 | /* Write plot-specific data */ |
132 | data_record = rt_info->write_header(rt_info, ginfo, s, time); | ||
129 | 133 | ||
130 | /* Stupid, fix to use resolution */ | 134 | /* Select closest relevant record */ |
131 | range = 2 / ginfo->resolution; | 135 | range = 2 / ginfo->resolution; |
136 | |||
132 | record = __find_rt_record(ginfo, rt_info, time, 1, range); | 137 | record = __find_rt_record(ginfo, rt_info, time, 1, range); |
133 | prev_record = find_prev_display_record(ginfo, rt_info, time, range); | 138 | prev_record = find_prev_display_record(ginfo, rt_info, time, range); |
134 | 139 | ||
@@ -142,6 +147,7 @@ rt_plot_display_info(struct graph_info *ginfo, struct graph_plot *plot, | |||
142 | record = (pdiff < rdiff) ? prev_record : record; | 147 | record = (pdiff < rdiff) ? prev_record : record; |
143 | } | 148 | } |
144 | 149 | ||
150 | /* Write event info */ | ||
145 | if (record) { | 151 | if (record) { |
146 | rts = get_rts(ginfo, record); | 152 | rts = get_rts(ginfo, record); |
147 | eid = pevent_data_type(ginfo->pevent, record); | 153 | eid = pevent_data_type(ginfo->pevent, record); |
@@ -155,16 +161,19 @@ rt_plot_display_info(struct graph_info *ginfo, struct graph_plot *plot, | |||
155 | pevent_event_info(s, event, record); | 161 | pevent_event_info(s, event, record); |
156 | } else | 162 | } else |
157 | trace_seq_printf(s, "\nUNKNOWN EVENT %d\n", eid); | 163 | trace_seq_printf(s, "\nUNKNOWN EVENT %d\n", eid); |
158 | } else { | ||
159 | trace_seq_printf(s, "Failsauce\n"); | ||
160 | } | 164 | } |
161 | trace_seq_putc(s, '\n'); | ||
162 | nano_to_milli(time, &msec, &nsec); | ||
163 | trace_seq_printf(s, "%llu.%06llu ms CPU: %03d", | ||
164 | msec, nsec, record->cpu); | ||
165 | free_record(record); | 165 | free_record(record); |
166 | } | 166 | } |
167 | 167 | ||
168 | /* Metadata */ | ||
169 | trace_seq_putc(s, '\n'); | ||
170 | nano_to_milli(time, &msec, &nsec); | ||
171 | trace_seq_printf(s, "%llu.%06llu ms", msec, nsec); | ||
172 | if (data_record) { | ||
173 | trace_seq_printf(s, " CPU: %03d", data_record->cpu); | ||
174 | free_record(data_record); | ||
175 | } | ||
176 | |||
168 | return 1; | 177 | return 1; |
169 | } | 178 | } |
170 | 179 | ||