perf annotate: Move the default annotate options to the library
authorArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 16 Mar 2018 17:33:38 +0000 (14:33 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 21 Mar 2018 15:53:40 +0000 (12:53 -0300)
One more thing that goes from the TUI code to be used more widely,
for instance it'll affect the default options used by:

  perf annotate --stdio2

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jin Yao <yao.jin@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-0nsz0dm0akdbo30vgja2a10e@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-annotate.c
tools/perf/builtin-report.c
tools/perf/builtin-top.c
tools/perf/ui/browser.c
tools/perf/ui/browser.h
tools/perf/ui/browsers/annotate.c
tools/perf/util/annotate.c
tools/perf/util/annotate.h

index e03f9be..fd5aac3 100644 (file)
@@ -572,6 +572,8 @@ int cmd_annotate(int argc, const char **argv)
        if (ret < 0)
                goto out_delete;
 
+       annotation_config__init();
+
        symbol_conf.try_vmlinux_path = true;
 
        ret = symbol__init(&annotate.session->header.env);
index 91da129..1a82f38 100644 (file)
@@ -1340,6 +1340,7 @@ repeat:
                        symbol_conf.priv_size += sizeof(u32);
                        symbol_conf.sort_by_name = true;
                }
+               annotation_config__init();
        }
 
        if (symbol__init(&session->header.env) < 0)
index 113c298..f39bd60 100644 (file)
@@ -1493,6 +1493,8 @@ int cmd_top(int argc, const char **argv)
        if (status < 0)
                goto out_delete_evlist;
 
+       annotation_config__init();
+
        symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL);
        if (symbol__init(NULL) < 0)
                return -1;
index 33c3032..9f6ce29 100644 (file)
@@ -784,6 +784,4 @@ void ui_browser__init(void)
                struct ui_browser_colorset *c = &ui_browser__colorsets[i++];
                sltt_set_color(c->colorset, c->name, c->fg, c->bg);
        }
-
-       annotate_browser__init();
 }
index 9e69c6a..7005717 100644 (file)
@@ -79,5 +79,4 @@ void ui_browser__list_head_seek(struct ui_browser *browser, off_t offset, int wh
 unsigned int ui_browser__list_head_refresh(struct ui_browser *browser);
 
 void ui_browser__init(void);
-void annotate_browser__init(void);
 #endif /* _PERF_UI_BROWSER_H_ */
index 74a26f4..916f237 100644 (file)
@@ -9,7 +9,6 @@
 #include "../../util/sort.h"
 #include "../../util/symbol.h"
 #include "../../util/evsel.h"
-#include "../../util/config.h"
 #include "../../util/evlist.h"
 #include <inttypes.h>
 #include <pthread.h>
@@ -22,11 +21,6 @@ struct disasm_line_samples {
        struct sym_hist_entry he;
 };
 
-static struct annotation_options annotate_browser__opts = {
-       .use_offset     = true,
-       .jump_arrows    = true,
-};
-
 struct arch;
 
 struct annotate_browser {
@@ -773,12 +767,6 @@ out:
 int map_symbol__tui_annotate(struct map_symbol *ms, struct perf_evsel *evsel,
                             struct hist_browser_timer *hbt)
 {
-       /* Set default value for show_total_period and show_nr_samples  */
-       annotate_browser__opts.show_total_period =
-               symbol_conf.show_total_period;
-       annotate_browser__opts.show_nr_samples =
-               symbol_conf.show_nr_samples;
-
        return symbol__tui_annotate(ms->sym, ms->map, evsel, hbt);
 }
 
@@ -819,7 +807,7 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map,
        if (map->dso->annotate_warned)
                return -1;
 
-       err = symbol__annotate2(sym, map, evsel, &annotate_browser__opts, &browser.arch);
+       err = symbol__annotate2(sym, map, evsel, &annotation__default_options, &browser.arch);
        if (err) {
                char msg[BUFSIZ];
                symbol__strerror_disassemble(sym, map, err, msg, sizeof(msg));
@@ -845,56 +833,3 @@ out_free_offsets:
        zfree(&notes->offsets);
        return ret;
 }
-
-#define ANNOTATE_CFG(n) \
-       { .name = #n, .value = &annotate_browser__opts.n, }
-
-/*
- * Keep the entries sorted, they are bsearch'ed
- */
-static struct annotate_config {
-       const char *name;
-       bool *value;
-} annotate__configs[] = {
-       ANNOTATE_CFG(hide_src_code),
-       ANNOTATE_CFG(jump_arrows),
-       ANNOTATE_CFG(show_linenr),
-       ANNOTATE_CFG(show_nr_jumps),
-       ANNOTATE_CFG(show_nr_samples),
-       ANNOTATE_CFG(show_total_period),
-       ANNOTATE_CFG(use_offset),
-};
-
-#undef ANNOTATE_CFG
-
-static int annotate_config__cmp(const void *name, const void *cfgp)
-{
-       const struct annotate_config *cfg = cfgp;
-
-       return strcmp(name, cfg->name);
-}
-
-static int annotate__config(const char *var, const char *value,
-                           void *data __maybe_unused)
-{
-       struct annotate_config *cfg;
-       const char *name;
-
-       if (!strstarts(var, "annotate."))
-               return 0;
-
-       name = var + 9;
-       cfg = bsearch(name, annotate__configs, ARRAY_SIZE(annotate__configs),
-                     sizeof(struct annotate_config), annotate_config__cmp);
-
-       if (cfg == NULL)
-               ui__warning("%s variable unknown, ignoring...", var);
-       else
-               *cfg->value = perf_config_bool(name, value);
-       return 0;
-}
-
-void annotate_browser__init(void)
-{
-       perf_config(annotate__config, NULL);
-}
index 98cf3e5..cfa641b 100644 (file)
@@ -14,6 +14,7 @@
 #include "sort.h"
 #include "build-id.h"
 #include "color.h"
+#include "config.h"
 #include "cache.h"
 #include "symbol.h"
 #include "debug.h"
 
 #include "sane_ctype.h"
 
+struct annotation_options annotation__default_options = {
+       .use_offset     = true,
+       .jump_arrows    = true,
+};
+
 const char     *disassembler_style;
 const char     *objdump_path;
 static regex_t  file_lineno;
@@ -2500,3 +2506,59 @@ out_free_offsets:
        zfree(&notes->offsets);
        return -1;
 }
+
+#define ANNOTATION__CFG(n) \
+       { .name = #n, .value = &annotation__default_options.n, }
+
+/*
+ * Keep the entries sorted, they are bsearch'ed
+ */
+static struct annotation_config {
+       const char *name;
+       bool *value;
+} annotation__configs[] = {
+       ANNOTATION__CFG(hide_src_code),
+       ANNOTATION__CFG(jump_arrows),
+       ANNOTATION__CFG(show_linenr),
+       ANNOTATION__CFG(show_nr_jumps),
+       ANNOTATION__CFG(show_nr_samples),
+       ANNOTATION__CFG(show_total_period),
+       ANNOTATION__CFG(use_offset),
+};
+
+#undef ANNOTATION__CFG
+
+static int annotation_config__cmp(const void *name, const void *cfgp)
+{
+       const struct annotation_config *cfg = cfgp;
+
+       return strcmp(name, cfg->name);
+}
+
+static int annotation__config(const char *var, const char *value,
+                           void *data __maybe_unused)
+{
+       struct annotation_config *cfg;
+       const char *name;
+
+       if (!strstarts(var, "annotate."))
+               return 0;
+
+       name = var + 9;
+       cfg = bsearch(name, annotation__configs, ARRAY_SIZE(annotation__configs),
+                     sizeof(struct annotation_config), annotation_config__cmp);
+
+       if (cfg == NULL)
+               pr_debug("%s variable unknown, ignoring...", var);
+       else
+               *cfg->value = perf_config_bool(name, value);
+       return 0;
+}
+
+void annotation_config__init(void)
+{
+       perf_config(annotation__config, NULL);
+
+       annotation__default_options.show_total_period = symbol_conf.show_total_period;
+       annotation__default_options.show_nr_samples   = symbol_conf.show_nr_samples;
+}
index cf32cbc..3faa580 100644 (file)
@@ -71,6 +71,8 @@ struct annotation_options {
             show_total_period;
 };
 
+extern struct annotation_options annotation__default_options;
+
 struct annotation;
 
 struct sym_hist_entry {
@@ -313,4 +315,6 @@ static inline int symbol__tui_annotate(struct symbol *sym __maybe_unused,
 
 extern const char      *disassembler_style;
 
+void annotation_config__init(void);
+
 #endif /* __PERF_ANNOTATE_H */