diff options
-rw-r--r-- | trace-graph.c | 68 |
1 files changed, 41 insertions, 27 deletions
diff --git a/trace-graph.c b/trace-graph.c index d9a26e4..a92293f 100644 --- a/trace-graph.c +++ b/trace-graph.c | |||
@@ -30,6 +30,17 @@ | |||
30 | #include "trace-local.h" | 30 | #include "trace-local.h" |
31 | #include "trace-graph.h" | 31 | #include "trace-graph.h" |
32 | 32 | ||
33 | #define DEBUG_LEVEL 1 | ||
34 | #if DEBUG_LEVEL > 0 | ||
35 | # define dprintf(l, x...) \ | ||
36 | do { \ | ||
37 | if (l <= DEBUG_LEVEL) \ | ||
38 | printf(x); \ | ||
39 | } while (0) | ||
40 | #else | ||
41 | # define dprintf(x...) do { } while (0) | ||
42 | #endif | ||
43 | |||
33 | #define MAX_WIDTH 10000 | 44 | #define MAX_WIDTH 10000 |
34 | 45 | ||
35 | #define CPU_SIZE 10 | 46 | #define CPU_SIZE 10 |
@@ -62,6 +73,9 @@ static void print_time(unsigned long long time) | |||
62 | { | 73 | { |
63 | unsigned long sec, usec; | 74 | unsigned long sec, usec; |
64 | 75 | ||
76 | if (!DEBUG_LEVEL) | ||
77 | return; | ||
78 | |||
65 | convert_nano(time, &sec, &usec); | 79 | convert_nano(time, &sec, &usec); |
66 | printf("%lu.%06lu", sec, usec); | 80 | printf("%lu.%06lu", sec, usec); |
67 | } | 81 | } |
@@ -137,8 +151,6 @@ button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data) | |||
137 | { | 151 | { |
138 | struct graph_info *ginfo = data; | 152 | struct graph_info *ginfo = data; |
139 | 153 | ||
140 | printf("button = %d\n", event->button); | ||
141 | |||
142 | if (event->button != 1) | 154 | if (event->button != 1) |
143 | return TRUE; | 155 | return TRUE; |
144 | 156 | ||
@@ -184,6 +196,9 @@ static void print_rec_info(struct record *record, struct pevent *pevent, int cpu | |||
184 | unsigned long sec, usec; | 196 | unsigned long sec, usec; |
185 | gint type; | 197 | gint type; |
186 | 198 | ||
199 | if (DEBUG_LEVEL < 3) | ||
200 | return; | ||
201 | |||
187 | trace_seq_init(&s); | 202 | trace_seq_init(&s); |
188 | 203 | ||
189 | convert_nano(record->ts, &sec, &usec); | 204 | convert_nano(record->ts, &sec, &usec); |
@@ -286,7 +301,6 @@ static void draw_cpu_info(struct graph_info *ginfo, gint cpu, gint x, gint y) | |||
286 | gdk_gc_set_foreground(pix_bg, &color); | 301 | gdk_gc_set_foreground(pix_bg, &color); |
287 | } | 302 | } |
288 | 303 | ||
289 | printf("res=%f\n", ginfo->resolution); | ||
290 | time = (x / ginfo->resolution) + ginfo->view_start_time; | 304 | time = (x / ginfo->resolution) + ginfo->view_start_time; |
291 | convert_nano(time, &sec, &usec); | 305 | convert_nano(time, &sec, &usec); |
292 | 306 | ||
@@ -294,7 +308,7 @@ static void draw_cpu_info(struct graph_info *ginfo, gint cpu, gint x, gint y) | |||
294 | 308 | ||
295 | trace_seq_init(&s); | 309 | trace_seq_init(&s); |
296 | 310 | ||
297 | printf("start=%zu end=%zu time=%lu\n", ginfo->start_time, ginfo->end_time, time); | 311 | dprintf(3, "start=%zu end=%zu time=%lu\n", ginfo->start_time, ginfo->end_time, time); |
298 | tracecmd_set_cpu_to_timestamp(ginfo->handle, cpu, time); | 312 | tracecmd_set_cpu_to_timestamp(ginfo->handle, cpu, time); |
299 | do { | 313 | do { |
300 | if (record) { | 314 | if (record) { |
@@ -307,7 +321,7 @@ static void draw_cpu_info(struct graph_info *ginfo, gint cpu, gint x, gint y) | |||
307 | if (record) { | 321 | if (record) { |
308 | 322 | ||
309 | if (record->ts > (time + 1 / ginfo->resolution) && offset) { | 323 | if (record->ts > (time + 1 / ginfo->resolution) && offset) { |
310 | printf("old ts = %llu!\n", record->ts); | 324 | dprintf(3, "old ts = %llu!\n", record->ts); |
311 | free_record(record); | 325 | free_record(record); |
312 | record = tracecmd_read_at(ginfo->handle, offset, NULL); | 326 | record = tracecmd_read_at(ginfo->handle, offset, NULL); |
313 | } | 327 | } |
@@ -317,8 +331,8 @@ static void draw_cpu_info(struct graph_info *ginfo, gint cpu, gint x, gint y) | |||
317 | comm = pevent_data_comm_from_pid(ginfo->pevent, pid); | 331 | comm = pevent_data_comm_from_pid(ginfo->pevent, pid); |
318 | } | 332 | } |
319 | 333 | ||
320 | printf("record->ts=%llu time=%zu-%zu\n", | 334 | dprintf(3, "record->ts=%llu time=%zu-%zu\n", |
321 | record->ts, time, time-(gint)(1/ginfo->resolution)); | 335 | record->ts, time, time-(gint)(1/ginfo->resolution)); |
322 | print_rec_info(record, pevent, cpu); | 336 | print_rec_info(record, pevent, cpu); |
323 | 337 | ||
324 | /* | 338 | /* |
@@ -496,9 +510,9 @@ static void zoom_in_window(struct graph_info *ginfo, gint start, gint end) | |||
496 | g_assert(start < end); | 510 | g_assert(start < end); |
497 | g_assert(ginfo->vadj); | 511 | g_assert(ginfo->vadj); |
498 | 512 | ||
499 | printf("*** started with "); | 513 | dprintf(1, "*** started with "); |
500 | print_time(start / ginfo->resolution + ginfo->view_start_time); | 514 | print_time(start / ginfo->resolution + ginfo->view_start_time); |
501 | printf("\n"); | 515 | dprintf(1, "\n"); |
502 | 516 | ||
503 | view_width = gtk_adjustment_get_page_size(ginfo->vadj); | 517 | view_width = gtk_adjustment_get_page_size(ginfo->vadj); |
504 | select_width = end - start; | 518 | select_width = end - start; |
@@ -509,15 +523,15 @@ static void zoom_in_window(struct graph_info *ginfo, gint start, gint end) | |||
509 | curr_width = ginfo->draw->allocation.width; | 523 | curr_width = ginfo->draw->allocation.width; |
510 | new_width = curr_width * percent; | 524 | new_width = curr_width * percent; |
511 | 525 | ||
512 | printf("width=%d\n", ginfo->draw->allocation.width); | 526 | dprintf(1, "width=%d\n", ginfo->draw->allocation.width); |
513 | if (ginfo->vadj) { | 527 | if (ginfo->vadj) { |
514 | printf("adj:%f-%f\n", gtk_adjustment_get_upper(ginfo->vadj), | 528 | dprintf(1, "adj:%f-%f\n", gtk_adjustment_get_upper(ginfo->vadj), |
515 | gtk_adjustment_get_lower(ginfo->vadj)); | 529 | gtk_adjustment_get_lower(ginfo->vadj)); |
516 | } else | 530 | } else |
517 | printf("no adjustment\n"); | 531 | dprintf(1, "no adjustment\n"); |
518 | 532 | ||
519 | ginfo->draw_width = new_width; | 533 | ginfo->draw_width = new_width; |
520 | printf("zoom in draw_width=%d full_width=%d\n", | 534 | dprintf(1, "zoom in draw_width=%d full_width=%d\n", |
521 | ginfo->draw_width, ginfo->full_width); | 535 | ginfo->draw_width, ginfo->full_width); |
522 | 536 | ||
523 | if (ginfo->draw_width > MAX_WIDTH) { | 537 | if (ginfo->draw_width > MAX_WIDTH) { |
@@ -576,10 +590,10 @@ static void zoom_in_window(struct graph_info *ginfo, gint start, gint end) | |||
576 | 590 | ||
577 | update_graph_to_start_x(ginfo); | 591 | update_graph_to_start_x(ginfo); |
578 | 592 | ||
579 | printf("new start/end =%d/%d full:%d start_time:", | 593 | dprintf(1, "new start/end =%d/%d full:%d start_time:", |
580 | new_start, new_end, ginfo->full_width); | 594 | new_start, new_end, ginfo->full_width); |
581 | print_time(ginfo->view_start_time); | 595 | print_time(ginfo->view_start_time); |
582 | printf("\n"); | 596 | dprintf(1, "\n"); |
583 | 597 | ||
584 | /* Adjust start to be the location for the vadj */ | 598 | /* Adjust start to be the location for the vadj */ |
585 | start = (mid - new_start) / percent - (end - start) / 2; | 599 | start = (mid - new_start) / percent - (end - start) / 2; |
@@ -589,7 +603,7 @@ static void zoom_in_window(struct graph_info *ginfo, gint start, gint end) | |||
589 | if (ginfo->vadj_value > (ginfo->draw_width - view_width)) | 603 | if (ginfo->vadj_value > (ginfo->draw_width - view_width)) |
590 | ginfo->vadj_value = ginfo->draw_width - view_width; | 604 | ginfo->vadj_value = ginfo->draw_width - view_width; |
591 | 605 | ||
592 | printf("new width=%d\n", ginfo->draw_width); | 606 | dprintf(1, "new width=%d\n", ginfo->draw_width); |
593 | 607 | ||
594 | /* make sure the width is sent */ | 608 | /* make sure the width is sent */ |
595 | if (ginfo->draw_width == old_width) | 609 | if (ginfo->draw_width == old_width) |
@@ -597,12 +611,12 @@ static void zoom_in_window(struct graph_info *ginfo, gint start, gint end) | |||
597 | ginfo->draw_height); | 611 | ginfo->draw_height); |
598 | gtk_widget_set_size_request(ginfo->draw, ginfo->draw_width, ginfo->draw_height); | 612 | gtk_widget_set_size_request(ginfo->draw, ginfo->draw_width, ginfo->draw_height); |
599 | 613 | ||
600 | printf("set val %f\n", ginfo->vadj_value); | 614 | dprintf(1, "set val %f\n", ginfo->vadj_value); |
601 | 615 | ||
602 | 616 | ||
603 | printf("*** ended with with "); | 617 | dprintf(1, "*** ended with with "); |
604 | print_time(ginfo->vadj_value / ginfo->resolution + ginfo->view_start_time); | 618 | print_time(ginfo->vadj_value / ginfo->resolution + ginfo->view_start_time); |
605 | printf("\n"); | 619 | dprintf(1, "\n"); |
606 | 620 | ||
607 | } | 621 | } |
608 | 622 | ||
@@ -648,11 +662,11 @@ static void zoom_out_window(struct graph_info *ginfo, gint start, gint end) | |||
648 | 662 | ||
649 | update_graph(ginfo, 1 / divider); | 663 | update_graph(ginfo, 1 / divider); |
650 | 664 | ||
651 | printf("width=%d\n", ginfo->draw->allocation.width); | 665 | dprintf(1, "width=%d\n", ginfo->draw->allocation.width); |
652 | 666 | ||
653 | ginfo->draw_width = new_width; | 667 | ginfo->draw_width = new_width; |
654 | 668 | ||
655 | printf("draw_width=%d full_width=%d\n", ginfo->draw_width, ginfo->full_width); | 669 | dprintf(1, "draw_width=%d full_width=%d\n", ginfo->draw_width, ginfo->full_width); |
656 | if (ginfo->full_width < view_width) { | 670 | if (ginfo->full_width < view_width) { |
657 | reset_graph(ginfo, view_width); | 671 | reset_graph(ginfo, view_width); |
658 | time = ginfo->view_start_time; | 672 | time = ginfo->view_start_time; |
@@ -677,7 +691,7 @@ static void zoom_out_window(struct graph_info *ginfo, gint start, gint end) | |||
677 | } | 691 | } |
678 | } | 692 | } |
679 | 693 | ||
680 | printf("new width=%d\n", ginfo->draw_width); | 694 | dprintf(1, "new width=%d\n", ginfo->draw_width); |
681 | 695 | ||
682 | /* make sure the width is sent */ | 696 | /* make sure the width is sent */ |
683 | if (ginfo->draw_width == old_width) | 697 | if (ginfo->draw_width == old_width) |
@@ -731,7 +745,7 @@ static void set_color_by_pid(GtkWidget *widget, GdkGC *gc, gint pid) | |||
731 | 745 | ||
732 | if (!(hash & 0xffffff) && last_pid != pid) { | 746 | if (!(hash & 0xffffff) && last_pid != pid) { |
733 | last_pid = pid; | 747 | last_pid = pid; |
734 | printf("pid=%d is black\n", pid); | 748 | dprintf(2, "pid=%d is black\n", pid); |
735 | } | 749 | } |
736 | color.red = (hash & 0xff)*(65535/255); | 750 | color.red = (hash & 0xff)*(65535/255); |
737 | color.blue = ((hash >> 8) & 0xff)*(65535/255); | 751 | color.blue = ((hash >> 8) & 0xff)*(65535/255); |
@@ -1139,7 +1153,7 @@ configure_event(GtkWidget *widget, GdkEventMotion *event, gpointer data) | |||
1139 | 1153 | ||
1140 | /* debug */ | 1154 | /* debug */ |
1141 | ginfo->vadj_value = gtk_adjustment_get_value(ginfo->vadj); | 1155 | ginfo->vadj_value = gtk_adjustment_get_value(ginfo->vadj); |
1142 | printf("get val %f\n", ginfo->vadj_value); | 1156 | dprintf(2, "get val %f\n", ginfo->vadj_value); |
1143 | ginfo->vadj_value = 0.0; | 1157 | ginfo->vadj_value = 0.0; |
1144 | 1158 | ||
1145 | return TRUE; | 1159 | return TRUE; |
@@ -1151,7 +1165,7 @@ destroy_event(GtkWidget *widget, gpointer data) | |||
1151 | struct graph_info *ginfo = data; | 1165 | struct graph_info *ginfo = data; |
1152 | 1166 | ||
1153 | if (ginfo->test) | 1167 | if (ginfo->test) |
1154 | printf("test = %s\n", ginfo->test); | 1168 | dprintf(1, "test = %s\n", ginfo->test); |
1155 | 1169 | ||
1156 | return TRUE; | 1170 | return TRUE; |
1157 | } | 1171 | } |
@@ -1327,10 +1341,10 @@ trace_graph_create_with_callbacks(struct tracecmd_input *handle, | |||
1327 | } | 1341 | } |
1328 | 1342 | ||
1329 | convert_nano(ginfo->start_time, &sec, &usec); | 1343 | convert_nano(ginfo->start_time, &sec, &usec); |
1330 | printf("start=%lu.%06lu ", sec, usec); | 1344 | dprintf(1,"start=%lu.%06lu ", sec, usec); |
1331 | 1345 | ||
1332 | convert_nano(ginfo->end_time, &sec, &usec); | 1346 | convert_nano(ginfo->end_time, &sec, &usec); |
1333 | printf("end=%lu.%06lu\n", sec, usec); | 1347 | dprintf(1, "end=%lu.%06lu\n", sec, usec); |
1334 | 1348 | ||
1335 | ginfo->view_start_time = ginfo->start_time; | 1349 | ginfo->view_start_time = ginfo->start_time; |
1336 | ginfo->view_end_time = ginfo->end_time; | 1350 | ginfo->view_end_time = ginfo->end_time; |