diff options
| author | Jonathan <hermanjl@hermanjl-Aspire-5553G.(none)> | 2012-03-09 01:00:31 -0500 |
|---|---|---|
| committer | Jonathan <hermanjl@hermanjl-Aspire-5553G.(none)> | 2012-03-09 01:00:31 -0500 |
| commit | 9b577cded73e720976a004a4f95c68b208296bf0 (patch) | |
| tree | df0e42405b78e4884b7d523d366fa14e830d86cd | |
| parent | 04b0f7d1402124aa7676d0358900af4ea1c04901 (diff) | |
rt-graph: usability improvements
1. Real-time CPUs are loaded at startup
2. A menu item for loading all real-time tasks is added
3. Black boxes appear around run times when zoomed in
| -rw-r--r-- | kernel-shark.c | 26 | ||||
| -rw-r--r-- | rt-graph.c | 26 | ||||
| -rw-r--r-- | rt-plot-cpu.c | 25 | ||||
| -rw-r--r-- | rt-plot-cpu.h | 1 | ||||
| -rw-r--r-- | rt-plot-task.c | 9 | ||||
| -rw-r--r-- | rt-plot-task.h | 2 | ||||
| -rw-r--r-- | trace-graph.c | 50 |
7 files changed, 100 insertions, 39 deletions
diff --git a/kernel-shark.c b/kernel-shark.c index dc5201c..6e41406 100644 --- a/kernel-shark.c +++ b/kernel-shark.c | |||
| @@ -1308,6 +1308,15 @@ plot_rt_tasks_clicked (gpointer data) | |||
| 1308 | free(selected); | 1308 | free(selected); |
| 1309 | } | 1309 | } |
| 1310 | 1310 | ||
| 1311 | static void | ||
| 1312 | show_all_rt_clicked (gpointer data) | ||
| 1313 | { | ||
| 1314 | struct shark_info *info = data; | ||
| 1315 | struct graph_info *ginfo = info->ginfo; | ||
| 1316 | rt_plot_add_all_tasks(ginfo); | ||
| 1317 | trace_graph_refresh(ginfo); | ||
| 1318 | } | ||
| 1319 | |||
| 1311 | 1320 | ||
| 1312 | /* Callback for the clicked signal of the help contents button */ | 1321 | /* Callback for the clicked signal of the help contents button */ |
| 1313 | static void | 1322 | static void |
| @@ -2015,6 +2024,8 @@ void kernel_shark(int argc, char **argv) | |||
| 2015 | gtk_widget_show(sub_item); | 2024 | gtk_widget_show(sub_item); |
| 2016 | 2025 | ||
| 2017 | 2026 | ||
| 2027 | |||
| 2028 | |||
| 2018 | /* --- Filter - Graph Tasks Option --- */ | 2029 | /* --- Filter - Graph Tasks Option --- */ |
| 2019 | 2030 | ||
| 2020 | sub_item = gtk_menu_item_new_with_label("tasks"); | 2031 | sub_item = gtk_menu_item_new_with_label("tasks"); |
| @@ -2231,6 +2242,21 @@ void kernel_shark(int argc, char **argv) | |||
| 2231 | /* We do need to show menu items */ | 2242 | /* We do need to show menu items */ |
| 2232 | gtk_widget_show(sub_item); | 2243 | gtk_widget_show(sub_item); |
| 2233 | 2244 | ||
| 2245 | /* --- Plot - All RT Tasks Option --- */ | ||
| 2246 | |||
| 2247 | sub_item = gtk_menu_item_new_with_label("Show All Real-Time Tasks"); | ||
| 2248 | |||
| 2249 | /* Add them to the menu */ | ||
| 2250 | gtk_menu_shell_append(GTK_MENU_SHELL (menu), sub_item); | ||
| 2251 | |||
| 2252 | /* We can attach the Quit menu item to our exit function */ | ||
| 2253 | g_signal_connect_swapped (G_OBJECT (sub_item), "activate", | ||
| 2254 | G_CALLBACK (show_all_rt_clicked), | ||
| 2255 | (gpointer) info); | ||
| 2256 | |||
| 2257 | /* We do need to show menu items */ | ||
| 2258 | gtk_widget_show(sub_item); | ||
| 2259 | |||
| 2234 | /* --- Plot - RT CPUs Option --- */ | 2260 | /* --- Plot - RT CPUs Option --- */ |
| 2235 | 2261 | ||
| 2236 | sub_item = gtk_menu_item_new_with_label("Real-Time CPUs"); | 2262 | sub_item = gtk_menu_item_new_with_label("Real-Time CPUs"); |
| @@ -1,7 +1,7 @@ | |||
| 1 | #include "trace-graph.h" | 1 | #include "trace-graph.h" |
| 2 | #include "trace-hash.h" | 2 | #include "trace-hash.h" |
| 3 | 3 | ||
| 4 | #define DEBUG_LEVEL 0 | 4 | #define DEBUG_LEVEL 3 |
| 5 | #if DEBUG_LEVEL > 0 | 5 | #if DEBUG_LEVEL > 0 |
| 6 | #define dprintf(l, x...) \ | 6 | #define dprintf(l, x...) \ |
| 7 | do { \ | 7 | do { \ |
| @@ -86,17 +86,17 @@ int rt_graph_check_any(struct rt_graph_info *rtg_info, | |||
| 86 | 86 | ||
| 87 | /** | 87 | /** |
| 88 | * rt_graph_check_task_param - check for litmus_task_param record | 88 | * rt_graph_check_task_param - check for litmus_task_param record |
| 89 | * Return 1 and @pid, @wcet, and @period if the record matches | 89 | * Return 1 and @pid, @out_wcet, and @out_period if the record matches |
| 90 | */ | 90 | */ |
| 91 | int rt_graph_check_task_param(struct rt_graph_info *rtg_info, | 91 | int rt_graph_check_task_param(struct rt_graph_info *rtg_info, |
| 92 | struct pevent *pevent, struct record *record, | 92 | struct pevent *pevent, struct record *record, |
| 93 | gint *pid, unsigned long long *wcet, | 93 | gint *pid, unsigned long long *out_wcet, |
| 94 | unsigned long long *period) | 94 | unsigned long long *out_period) |
| 95 | { | 95 | { |
| 96 | struct event_format *event; | 96 | struct event_format *event; |
| 97 | struct rt_task_params *params; | 97 | struct rt_task_params *params; |
| 98 | struct task_list *list; | 98 | struct task_list *list; |
| 99 | unsigned long long val; | 99 | unsigned long long val, wcet, period; |
| 100 | gint id; | 100 | gint id; |
| 101 | int ret = 0; | 101 | int ret = 0; |
| 102 | 102 | ||
| @@ -122,12 +122,12 @@ int rt_graph_check_task_param(struct rt_graph_info *rtg_info, | |||
| 122 | record->data, &val); | 122 | record->data, &val); |
| 123 | *pid = val; | 123 | *pid = val; |
| 124 | pevent_read_number_field(rtg_info->param_wcet_field, | 124 | pevent_read_number_field(rtg_info->param_wcet_field, |
| 125 | record->data, wcet); | 125 | record->data, &wcet); |
| 126 | pevent_read_number_field(rtg_info->param_period_field, | 126 | pevent_read_number_field(rtg_info->param_period_field, |
| 127 | record->data, period); | 127 | record->data, &period); |
| 128 | ret = 1; | 128 | ret = 1; |
| 129 | dprintf(3, "Read task_param (%d) record for task %d " | 129 | dprintf(3, "Read task_param (%d) record for task %d " |
| 130 | "(%llu, %llu)\n", id, *pid, *wcet, *period); | 130 | "(%llu, %llu)\n", id, *pid, wcet, period); |
| 131 | 131 | ||
| 132 | list = add_task_hash(rtg_info->tasks, *pid); | 132 | list = add_task_hash(rtg_info->tasks, *pid); |
| 133 | if (!list->data) { | 133 | if (!list->data) { |
| @@ -138,13 +138,15 @@ int rt_graph_check_task_param(struct rt_graph_info *rtg_info, | |||
| 138 | * Store them with the task to avoid this issue. | 138 | * Store them with the task to avoid this issue. |
| 139 | */ | 139 | */ |
| 140 | params = malloc_or_die(sizeof(*params)); | 140 | params = malloc_or_die(sizeof(*params)); |
| 141 | params->wcet = *wcet; | 141 | params->wcet = wcet; |
| 142 | params->period = *period; | 142 | params->period = period; |
| 143 | list->data = params; | 143 | list->data = params; |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | if (*period > rtg_info->max_period) | 146 | if (period > rtg_info->max_period) |
| 147 | rtg_info->max_period = *period; | 147 | rtg_info->max_period = period; |
| 148 | *out_wcet = wcet; | ||
| 149 | *out_period = period; | ||
| 148 | } | 150 | } |
| 149 | out: | 151 | out: |
| 150 | return ret; | 152 | return ret; |
diff --git a/rt-plot-cpu.c b/rt-plot-cpu.c index 7b201dc..25c4ec9 100644 --- a/rt-plot-cpu.c +++ b/rt-plot-cpu.c | |||
| @@ -74,10 +74,16 @@ __find_record(struct graph_info *ginfo, int cpu, unsigned long long time, | |||
| 74 | 74 | ||
| 75 | while ((record = tracecmd_read_data(ginfo->handle, cpu))) { | 75 | while ((record = tracecmd_read_data(ginfo->handle, cpu))) { |
| 76 | ignored = 0; | 76 | ignored = 0; |
| 77 | if (display) { | 77 | eid = pevent_data_type(ginfo->pevent, record); |
| 78 | eid = pevent_data_type(ginfo->pevent, record); | 78 | |
| 79 | if (display) | ||
| 79 | ignored = !is_displayed(ginfo, eid); | 80 | ignored = !is_displayed(ginfo, eid); |
| 80 | } | 81 | else |
| 82 | /* Without this ignore, the info popup is going | ||
| 83 | * to be sched_switchs almost always. | ||
| 84 | */ | ||
| 85 | ignored = (eid == ginfo->event_sched_switch_id); | ||
| 86 | |||
| 81 | if (get_rts(ginfo, record) >= time && !ignored) | 87 | if (get_rts(ginfo, record) >= time && !ignored) |
| 82 | break; | 88 | break; |
| 83 | free_record(record); | 89 | free_record(record); |
| @@ -342,11 +348,13 @@ static int rt_cpu_plot_event(struct graph_info *ginfo, struct graph_plot *plot, | |||
| 342 | * is_displayed will not work here or in any other methods. | 348 | * is_displayed will not work here or in any other methods. |
| 343 | */ | 349 | */ |
| 344 | #define ARG rtg_info, ginfo->pevent, record, &pid | 350 | #define ARG rtg_info, ginfo->pevent, record, &pid |
| 351 | rt_graph_check_task_param(ARG, &dull, &dull); | ||
| 345 | rt_graph_check_task_release(ARG, &dint, &dull, &dull); | 352 | rt_graph_check_task_release(ARG, &dint, &dull, &dull); |
| 346 | rt_graph_check_task_block(ARG, &dull); | 353 | rt_graph_check_task_block(ARG, &dull); |
| 347 | rt_graph_check_task_resume(ARG, &dull); | 354 | rt_graph_check_task_resume(ARG, &dull); |
| 348 | rt_graph_check_any(ARG, &eid, &ts); | 355 | rt_graph_check_any(ARG, &eid, &ts); |
| 349 | #undef ARG | 356 | #undef ARG |
| 357 | |||
| 350 | if (is_displayed(ginfo, eid)) { | 358 | if (is_displayed(ginfo, eid)) { |
| 351 | info->line = TRUE; | 359 | info->line = TRUE; |
| 352 | info->lcolor = hash_pid(pid); | 360 | info->lcolor = hash_pid(pid); |
| @@ -427,6 +435,8 @@ rt_cpu_plot_display_info(struct graph_info *ginfo, struct graph_plot *plot, | |||
| 427 | trace_seq_putc(s, '\n'); | 435 | trace_seq_putc(s, '\n'); |
| 428 | pevent_event_info(s, event, record); | 436 | pevent_event_info(s, event, record); |
| 429 | trace_seq_putc(s, '\n'); | 437 | trace_seq_putc(s, '\n'); |
| 438 | if (!is_running) | ||
| 439 | trace_seq_putc(s, '\n'); | ||
| 430 | } else | 440 | } else |
| 431 | trace_seq_printf(s, "UNKNOWN EVENT %d\n", eid); | 441 | trace_seq_printf(s, "UNKNOWN EVENT %d\n", eid); |
| 432 | } | 442 | } |
| @@ -554,9 +564,16 @@ void rt_plot_cpu(struct graph_info *ginfo, int cpu) | |||
| 554 | rtc_info->cpu = cpu; | 564 | rtc_info->cpu = cpu; |
| 555 | rtc_info->label = malloc_or_die(LLABEL); | 565 | rtc_info->label = malloc_or_die(LLABEL); |
| 556 | 566 | ||
| 557 | snprintf(label, 100, "*CPU %d", cpu); | 567 | snprintf(label, 100, "RT-CPU %d", cpu); |
| 558 | 568 | ||
| 559 | plot = trace_graph_plot_append(ginfo, label, PLOT_TYPE_RT_CPU, | 569 | plot = trace_graph_plot_append(ginfo, label, PLOT_TYPE_RT_CPU, |
| 560 | TIME_TYPE_RT, &rt_cpu_cb, rtc_info); | 570 | TIME_TYPE_RT, &rt_cpu_cb, rtc_info); |
| 561 | trace_graph_plot_add_all_recs(ginfo, plot); | 571 | trace_graph_plot_add_all_recs(ginfo, plot); |
| 562 | } | 572 | } |
| 573 | |||
| 574 | void rt_plot_init_cpus(struct graph_info *ginfo, int cpus) | ||
| 575 | { | ||
| 576 | long cpu; | ||
| 577 | for (cpu = 0; cpu < cpus; cpu++) | ||
| 578 | rt_plot_cpu(ginfo, cpu); | ||
| 579 | } | ||
diff --git a/rt-plot-cpu.h b/rt-plot-cpu.h index eb63167..4af978d 100644 --- a/rt-plot-cpu.h +++ b/rt-plot-cpu.h | |||
| @@ -17,5 +17,6 @@ void rt_plot_cpus_update_callback(gboolean accept, | |||
| 17 | gboolean all_cpus, | 17 | gboolean all_cpus, |
| 18 | guint64 *selected_cpu_mask, | 18 | guint64 *selected_cpu_mask, |
| 19 | gpointer data); | 19 | gpointer data); |
| 20 | void rt_plot_init_cpus(struct graph_info *ginfo, int cpus); | ||
| 20 | 21 | ||
| 21 | #endif | 22 | #endif |
diff --git a/rt-plot-task.c b/rt-plot-task.c index 7132fb2..a5b475f 100644 --- a/rt-plot-task.c +++ b/rt-plot-task.c | |||
| @@ -832,3 +832,12 @@ void rt_plot_task(struct graph_info *ginfo, int pid, int pos) | |||
| 832 | free(plot_label); | 832 | free(plot_label); |
| 833 | trace_graph_plot_add_all_recs(ginfo, plot); | 833 | trace_graph_plot_add_all_recs(ginfo, plot); |
| 834 | } | 834 | } |
| 835 | |||
| 836 | void rt_plot_add_all_tasks(struct graph_info *ginfo) | ||
| 837 | { | ||
| 838 | gint *tasks; | ||
| 839 | int i; | ||
| 840 | tasks = task_list_pids(ginfo->rtg_info.tasks); | ||
| 841 | for (i = 0; tasks[i] != -1; i++) | ||
| 842 | rt_plot_task(ginfo, tasks[i], ginfo->plots); | ||
| 843 | } | ||
diff --git a/rt-plot-task.h b/rt-plot-task.h index ccbd208..a61a2b7 100644 --- a/rt-plot-task.h +++ b/rt-plot-task.h | |||
| @@ -29,4 +29,6 @@ void rt_plot_task(struct graph_info *ginfo, int pid, int pos); | |||
| 29 | void rt_plot_tasks_plotted(struct graph_info *ginfo, gint **plotted); | 29 | void rt_plot_tasks_plotted(struct graph_info *ginfo, gint **plotted); |
| 30 | void rt_plot_task_update_callback(gboolean accept, gint *selected, | 30 | void rt_plot_task_update_callback(gboolean accept, gint *selected, |
| 31 | gint *non_select, gpointer data); | 31 | gint *non_select, gpointer data); |
| 32 | void rt_plot_add_all_tasks(struct graph_info *ginfo); | ||
| 33 | |||
| 32 | #endif | 34 | #endif |
diff --git a/trace-graph.c b/trace-graph.c index 42a0b27..76420d6 100644 --- a/trace-graph.c +++ b/trace-graph.c | |||
| @@ -55,7 +55,7 @@ | |||
| 55 | #define PLOT_GIVE 2 | 55 | #define PLOT_GIVE 2 |
| 56 | #define PLOT_BEGIN 80 | 56 | #define PLOT_BEGIN 80 |
| 57 | #define PLOT_SEP 50 | 57 | #define PLOT_SEP 50 |
| 58 | #define MAX_TRI_TIME 50000000 | 58 | #define MAX_TRI_TIME 20000000 |
| 59 | #define PLOT_LINE(plot) (PLOT_SEP * (plot) + PLOT_BEGIN + PLOT_SIZE) | 59 | #define PLOT_LINE(plot) (PLOT_SEP * (plot) + PLOT_BEGIN + PLOT_SIZE) |
| 60 | #define PLOT_TOP(plot) (PLOT_LINE(plot) - PLOT_SIZE * 2) | 60 | #define PLOT_TOP(plot) (PLOT_LINE(plot) - PLOT_SIZE * 2) |
| 61 | #define PLOT_BOX_TOP(plot) (PLOT_LINE(plot) - PLOT_SIZE) | 61 | #define PLOT_BOX_TOP(plot) (PLOT_LINE(plot) - PLOT_SIZE) |
| @@ -92,6 +92,12 @@ static int convert_dist_to_time(struct graph_info *ginfo, int dist) | |||
| 92 | return convert_x_to_time(ginfo, dist) - convert_x_to_time(ginfo, 0); | 92 | return convert_x_to_time(ginfo, dist) - convert_x_to_time(ginfo, 0); |
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | static int is_high_res(struct graph_info *ginfo) | ||
| 96 | { | ||
| 97 | return convert_dist_to_time(ginfo, PLOT_TRI_SIZE) < MAX_TRI_TIME; | ||
| 98 | } | ||
| 99 | |||
| 100 | |||
| 95 | static void print_time(unsigned long long time) | 101 | static void print_time(unsigned long long time) |
| 96 | { | 102 | { |
| 97 | unsigned long sec, usec; | 103 | unsigned long sec, usec; |
| @@ -126,7 +132,6 @@ static void init_event_cache(struct graph_info *ginfo) | |||
| 126 | * it into the pevent command line list. | 132 | * it into the pevent command line list. |
| 127 | */ | 133 | */ |
| 128 | ginfo->read_comms = TRUE; | 134 | ginfo->read_comms = TRUE; |
| 129 | |||
| 130 | init_rt_event_cache(&ginfo->rtg_info); | 135 | init_rt_event_cache(&ginfo->rtg_info); |
| 131 | } | 136 | } |
| 132 | 137 | ||
| @@ -1642,7 +1647,7 @@ static gint draw_plot_line(struct graph_info *ginfo, int i, | |||
| 1642 | /* y = (small) ? PLOT_BOX_TOP(i) : PLOT_TOP(i); */ | 1647 | /* y = (small) ? PLOT_BOX_TOP(i) : PLOT_TOP(i); */ |
| 1643 | y = PLOT_TOP(i); | 1648 | y = PLOT_TOP(i); |
| 1644 | 1649 | ||
| 1645 | if (!small || convert_dist_to_time(ginfo, PLOT_TRI_SIZE) < MAX_TRI_TIME) { | 1650 | if (!small || is_high_res(ginfo)) { |
| 1646 | gdk_draw_line(ginfo->curr_pixmap, gc, | 1651 | gdk_draw_line(ginfo->curr_pixmap, gc, |
| 1647 | x, y, x, PLOT_BOTTOM(i)); | 1652 | x, y, x, PLOT_BOTTOM(i)); |
| 1648 | } | 1653 | } |
| @@ -1691,6 +1696,14 @@ static void draw_plot_box(struct graph_info *ginfo, int i, | |||
| 1691 | fill, | 1696 | fill, |
| 1692 | x1, y, | 1697 | x1, y, |
| 1693 | x2 - x1, size); | 1698 | x2 - x1, size); |
| 1699 | if (is_high_res(ginfo)) { | ||
| 1700 | gdk_draw_rectangle(ginfo->curr_pixmap, | ||
| 1701 | ginfo->draw->style->black_gc, | ||
| 1702 | FALSE, | ||
| 1703 | x1, y, | ||
| 1704 | x2 - x1, size); | ||
| 1705 | } | ||
| 1706 | |||
| 1694 | if (label) | 1707 | if (label) |
| 1695 | draw_plot_label(ginfo, label, x1 + 1, y + 1, x2 - x1 - 2); | 1708 | draw_plot_label(ginfo, label, x1 + 1, y + 1, x2 - x1 - 2); |
| 1696 | } | 1709 | } |
| @@ -1709,11 +1722,9 @@ static void draw_plot_release(struct graph_info *ginfo, int i, | |||
| 1709 | tpoints[2].x = x + PLOT_TRI_SIZE/2; | 1722 | tpoints[2].x = x + PLOT_TRI_SIZE/2; |
| 1710 | tpoints[2].y = tbase; | 1723 | tpoints[2].y = tbase; |
| 1711 | 1724 | ||
| 1712 | if (convert_dist_to_time(ginfo, PLOT_TRI_SIZE) < MAX_TRI_TIME) { | 1725 | gdk_draw_line(ginfo->curr_pixmap, gc, |
| 1713 | gdk_draw_line(ginfo->curr_pixmap, gc, | 1726 | x, tbase, x, PLOT_BOX_BOTTOM(i)); |
| 1714 | x, tbase, x, PLOT_BOX_BOTTOM(i)); | 1727 | gdk_draw_polygon(ginfo->curr_pixmap, gc, FALSE, tpoints, 3); |
| 1715 | gdk_draw_polygon(ginfo->curr_pixmap, gc, FALSE, tpoints, 3); | ||
| 1716 | } | ||
| 1717 | } | 1728 | } |
| 1718 | 1729 | ||
| 1719 | static void draw_plot_deadline(struct graph_info *ginfo, int i, | 1730 | static void draw_plot_deadline(struct graph_info *ginfo, int i, |
| @@ -1729,11 +1740,9 @@ static void draw_plot_deadline(struct graph_info *ginfo, int i, | |||
| 1729 | tpoints[2].x = x + PLOT_TRI_SIZE/2; | 1740 | tpoints[2].x = x + PLOT_TRI_SIZE/2; |
| 1730 | tpoints[2].y = tbase; | 1741 | tpoints[2].y = tbase; |
| 1731 | 1742 | ||
| 1732 | if (convert_dist_to_time(ginfo, PLOT_TRI_SIZE) < MAX_TRI_TIME) { | 1743 | gdk_draw_line(ginfo->curr_pixmap, gc, |
| 1733 | gdk_draw_line(ginfo->curr_pixmap, gc, | 1744 | x, PLOT_BOX_TOP(i), x, tbase); |
| 1734 | x, PLOT_BOX_TOP(i), x, tbase); | 1745 | gdk_draw_polygon(ginfo->curr_pixmap, gc, FALSE, tpoints, 3); |
| 1735 | gdk_draw_polygon(ginfo->curr_pixmap, gc, FALSE, tpoints, 3); | ||
| 1736 | } | ||
| 1737 | } | 1746 | } |
| 1738 | 1747 | ||
| 1739 | static void draw_plot_completion(struct graph_info *ginfo, int i, | 1748 | static void draw_plot_completion(struct graph_info *ginfo, int i, |
| @@ -1749,9 +1758,7 @@ static void draw_plot_completion(struct graph_info *ginfo, int i, | |||
| 1749 | tpoints[2].x = x + PLOT_BTRI_SIZE/2; | 1758 | tpoints[2].x = x + PLOT_BTRI_SIZE/2; |
| 1750 | tpoints[2].y = tbase; | 1759 | tpoints[2].y = tbase; |
| 1751 | 1760 | ||
| 1752 | if (convert_dist_to_time(ginfo, PLOT_BTRI_SIZE) < MAX_TRI_TIME) { | 1761 | gdk_draw_polygon(ginfo->curr_pixmap, gc, TRUE, tpoints, 3); |
| 1753 | gdk_draw_polygon(ginfo->curr_pixmap, gc, TRUE, tpoints, 3); | ||
| 1754 | } | ||
| 1755 | } | 1762 | } |
| 1756 | 1763 | ||
| 1757 | static void draw_plot(struct graph_info *ginfo, struct graph_plot *plot, | 1764 | static void draw_plot(struct graph_info *ginfo, struct graph_plot *plot, |
| @@ -1790,7 +1797,7 @@ static void draw_plot(struct graph_info *ginfo, struct graph_plot *plot, | |||
| 1790 | info.bfill, info.bthin, info.blabel, plot->gc); | 1797 | info.bfill, info.bthin, info.blabel, plot->gc); |
| 1791 | } | 1798 | } |
| 1792 | 1799 | ||
| 1793 | if (info.release) { | 1800 | if (info.release && is_high_res(ginfo)) { |
| 1794 | if (plot->last_color != 0) { | 1801 | if (plot->last_color != 0) { |
| 1795 | plot->last_color = 0; | 1802 | plot->last_color = 0; |
| 1796 | set_color(ginfo->draw, plot->gc, plot->last_color); | 1803 | set_color(ginfo->draw, plot->gc, plot->last_color); |
| @@ -1798,7 +1805,7 @@ static void draw_plot(struct graph_info *ginfo, struct graph_plot *plot, | |||
| 1798 | draw_plot_release(ginfo, plot->pos, info.rtime, plot->gc); | 1805 | draw_plot_release(ginfo, plot->pos, info.rtime, plot->gc); |
| 1799 | } | 1806 | } |
| 1800 | 1807 | ||
| 1801 | if (info.deadline) { | 1808 | if (info.deadline && is_high_res(ginfo)) { |
| 1802 | if (plot->last_color != 0) { | 1809 | if (plot->last_color != 0) { |
| 1803 | plot->last_color = 0; | 1810 | plot->last_color = 0; |
| 1804 | set_color(ginfo->draw, plot->gc, plot->last_color); | 1811 | set_color(ginfo->draw, plot->gc, plot->last_color); |
| @@ -1806,7 +1813,7 @@ static void draw_plot(struct graph_info *ginfo, struct graph_plot *plot, | |||
| 1806 | draw_plot_deadline(ginfo, plot->pos, info.dtime, plot->gc); | 1813 | draw_plot_deadline(ginfo, plot->pos, info.dtime, plot->gc); |
| 1807 | } | 1814 | } |
| 1808 | 1815 | ||
| 1809 | if (info.completion) { | 1816 | if (info.completion && is_high_res(ginfo)) { |
| 1810 | if (plot->last_color != 0) { | 1817 | if (plot->last_color != 0) { |
| 1811 | plot->last_color = 0; | 1818 | plot->last_color = 0; |
| 1812 | set_color(ginfo->draw, plot->gc, plot->last_color); | 1819 | set_color(ginfo->draw, plot->gc, plot->last_color); |
| @@ -1924,8 +1931,6 @@ static void draw_plots(struct graph_info *ginfo, gint new_width) | |||
| 1924 | gint cpu; | 1931 | gint cpu; |
| 1925 | gint i; | 1932 | gint i; |
| 1926 | 1933 | ||
| 1927 | printf("----Drawing plots----\n"); | ||
| 1928 | |||
| 1929 | /* Initialize plots */ | 1934 | /* Initialize plots */ |
| 1930 | for (i = 0; i < ginfo->plots; i++) { | 1935 | for (i = 0; i < ginfo->plots; i++) { |
| 1931 | plot = ginfo->plot_array[i]; | 1936 | plot = ginfo->plot_array[i]; |
| @@ -2502,7 +2507,7 @@ static int load_handle(struct graph_info *ginfo, | |||
| 2502 | ginfo->start_time = -1ULL; | 2507 | ginfo->start_time = -1ULL; |
| 2503 | ginfo->end_time = 0; | 2508 | ginfo->end_time = 0; |
| 2504 | 2509 | ||
| 2505 | graph_plot_init_cpus(ginfo, ginfo->cpus); | 2510 | rt_plot_init_cpus(ginfo, ginfo->cpus); |
| 2506 | 2511 | ||
| 2507 | ginfo->draw_height = PLOT_SPACE(ginfo->plots); | 2512 | ginfo->draw_height = PLOT_SPACE(ginfo->plots); |
| 2508 | 2513 | ||
| @@ -2549,7 +2554,6 @@ void trace_graph_refresh(struct graph_info *ginfo) | |||
| 2549 | ginfo->draw_height = PLOT_SPACE(ginfo->plots); | 2554 | ginfo->draw_height = PLOT_SPACE(ginfo->plots); |
| 2550 | gtk_widget_set_size_request(ginfo->draw, ginfo->draw_width, ginfo->draw_height); | 2555 | gtk_widget_set_size_request(ginfo->draw, ginfo->draw_width, ginfo->draw_height); |
| 2551 | update_label_window(ginfo); | 2556 | update_label_window(ginfo); |
| 2552 | printf("----Redrawing graph----\n"); | ||
| 2553 | redraw_graph(ginfo); | 2557 | redraw_graph(ginfo); |
| 2554 | } | 2558 | } |
| 2555 | 2559 | ||
