]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - tools/perf/builtin-top.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
[karo-tx-linux.git] / tools / perf / builtin-top.c
index 80c9e062bd5b6e067c882d0f32cc3b2346ef2c8a..676b4fb0070f09be3d09fcb253f776754f7f711c 100644 (file)
@@ -152,7 +152,7 @@ static int parse_source(struct sym_entry *syme)
        /*
         * We can't annotate with just /proc/kallsyms
         */
-       if (map->dso->origin == DSO__ORIG_KERNEL) {
+       if (map->dso->symtab_type == SYMTAB__KALLSYMS) {
                pr_err("Can't annotate %s: No vmlinux file was found in the "
                       "path\n", sym->name);
                sleep(1);
@@ -515,24 +515,27 @@ static void handle_keypress(struct perf_session *session, int c)
                        break;
                case 'E':
                        if (top.evlist->nr_entries > 1) {
+                               /* Select 0 as the default event: */
+                               int counter = 0;
+
                                fprintf(stderr, "\nAvailable events:");
 
                                list_for_each_entry(top.sym_evsel, &top.evlist->entries, node)
                                        fprintf(stderr, "\n\t%d %s", top.sym_evsel->idx, event_name(top.sym_evsel));
 
-                               prompt_integer(&top.sym_counter, "Enter details event counter");
+                               prompt_integer(&counter, "Enter details event counter");
 
-                               if (top.sym_counter >= top.evlist->nr_entries) {
+                               if (counter >= top.evlist->nr_entries) {
                                        top.sym_evsel = list_entry(top.evlist->entries.next, struct perf_evsel, node);
-                                       top.sym_counter = 0;
                                        fprintf(stderr, "Sorry, no such event, using %s.\n", event_name(top.sym_evsel));
                                        sleep(1);
                                        break;
                                }
                                list_for_each_entry(top.sym_evsel, &top.evlist->entries, node)
-                                       if (top.sym_evsel->idx == top.sym_counter)
+                                       if (top.sym_evsel->idx == counter)
                                                break;
-                       } else top.sym_counter = 0;
+                       } else
+                               top.sym_evsel = list_entry(top.evlist->entries.next, struct perf_evsel, node);
                        break;
                case 'f':
                        prompt_integer(&top.count_filter, "Enter display event count filter");
@@ -675,7 +678,7 @@ static int symbol_filter(struct map *map, struct symbol *sym)
 
        for (i = 0; skip_symbols[i]; i++) {
                if (!strcmp(skip_symbols[i], name)) {
-                       syme->skip = 1;
+                       sym->ignore = true;
                        break;
                }
        }
@@ -768,7 +771,7 @@ static void perf_event__process_sample(const union perf_event *event,
                        struct symbol *sym = sym_entry__symbol(top.sym_filter_entry);
 
                        pr_err("Can't annotate %s", sym->name);
-                       if (top.sym_filter_entry->map->dso->origin == DSO__ORIG_KERNEL) {
+                       if (top.sym_filter_entry->map->dso->symtab_type == SYMTAB__KALLSYMS) {
                                pr_err(": No vmlinux file was found in the path:\n");
                                machine__fprintf_vmlinux_path(machine, stderr);
                        } else
@@ -778,10 +781,9 @@ static void perf_event__process_sample(const union perf_event *event,
        }
 
        syme = symbol__priv(al.sym);
-       if (!syme->skip) {
+       if (!al.sym->ignore) {
                struct perf_evsel *evsel;
 
-               syme->origin = origin;
                evsel = perf_evlist__id2evsel(top.evlist, sample->id);
                assert(evsel != NULL);
                syme->count[evsel->idx]++;