perf symbol: Move sym_entry->skip to symbol->ignore
authorArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 11 Mar 2011 16:36:01 +0000 (13:36 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 11 Mar 2011 16:36:01 +0000 (13:36 -0300)
While going thru each of the sym_entry fields looking to reduce it to
the set of entries needed when in an active symbols list, 'skip' should
really be in symbol, as we set it when loading the symtab.

And the space used by the basic symbol allocation remains the same as
we had 5 bytes of padding.

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-top.c
tools/perf/util/symbol.h
tools/perf/util/top.h

index 31ea7a68baa468de9d4b5d23b2f657425d4b448b..70f1075cc5b03493a13ddf943f126b96d4035554 100644 (file)
@@ -676,7 +676,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;
                }
        }
@@ -779,7 +779,7 @@ 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;
 
                evsel = perf_evlist__id2evsel(top.evlist, sample->id);
index db39c0c6360867471551cf3c93e6d22daa60c1a9..713b0b40cc4acbb6f01ff6b7b366dc845d9d1852 100644 (file)
@@ -48,12 +48,17 @@ char *strxfrchar(char *s, char from, char to);
 
 #define BUILD_ID_SIZE 20
 
+/** struct symbol - symtab entry
+ *
+ * @ignore - resolvable but tools ignore it (e.g. idle routines)
+ */
 struct symbol {
        struct rb_node  rb_node;
        u64             start;
        u64             end;
        u16             namelen;
        u8              binding;
+       bool            ignore;
        char            name[0];
 };
 
index ba111b25e16aa94a8276bc2d3ba6a76d18b43dac..bfbf95bcc6039b4a92dd2026f7a21a289ecd5e7f 100644 (file)
@@ -16,7 +16,6 @@ struct sym_entry {
        struct list_head        node;
        unsigned long           snap_count;
        double                  weight;
-       int                     skip;
        struct map              *map;
        unsigned long           count[0];
 };