]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - tools/perf/ui/stdio/hist.c
perf report: Show branch info in callchain entry for stdio mode
[mirror_ubuntu-artful-kernel.git] / tools / perf / ui / stdio / hist.c
index 89d8441f989051e16894f24f71f6477ebca1b586..668f4aecf2e6dfd933deb963d50362d09caa9fd9 100644 (file)
@@ -41,7 +41,9 @@ static size_t ipchain__fprintf_graph(FILE *fp, struct callchain_node *node,
 {
        int i;
        size_t ret = 0;
-       char bf[1024];
+       char bf[1024], *alloc_str = NULL;
+       char buf[64];
+       const char *str;
 
        ret += callchain__fprintf_left_margin(fp, left_margin);
        for (i = 0; i < depth; i++) {
@@ -56,8 +58,26 @@ static size_t ipchain__fprintf_graph(FILE *fp, struct callchain_node *node,
                } else
                        ret += fprintf(fp, "%s", "          ");
        }
-       fputs(callchain_list__sym_name(chain, bf, sizeof(bf), false), fp);
+
+       str = callchain_list__sym_name(chain, bf, sizeof(bf), false);
+
+       if (symbol_conf.show_branchflag_count) {
+               if (!period)
+                       callchain_list_counts__printf_value(node, chain, NULL,
+                                                           buf, sizeof(buf));
+               else
+                       callchain_list_counts__printf_value(NULL, chain, NULL,
+                                                           buf, sizeof(buf));
+
+               if (asprintf(&alloc_str, "%s%s", str, buf) < 0)
+                       str = "Not enough memory!";
+               else
+                       str = alloc_str;
+       }
+
+       fputs(str, fp);
        fputc('\n', fp);
+       free(alloc_str);
        return ret;
 }
 
@@ -219,8 +239,15 @@ static size_t callchain__fprintf_graph(FILE *fp, struct rb_root *root,
                        } else
                                ret += callchain__fprintf_left_margin(fp, left_margin);
 
-                       ret += fprintf(fp, "%s\n", callchain_list__sym_name(chain, bf, sizeof(bf),
-                                                       false));
+                       ret += fprintf(fp, "%s",
+                                      callchain_list__sym_name(chain, bf,
+                                                               sizeof(bf),
+                                                               false));
+
+                       if (symbol_conf.show_branchflag_count)
+                               ret += callchain_list_counts__printf_value(
+                                               NULL, chain, fp, NULL, 0);
+                       ret += fprintf(fp, "\n");
 
                        if (++entries_printed == callchain_param.print_limit)
                                break;