浏览代码

perf symbol: Move sym_entry->skip to symbol->ignore

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>
Arnaldo Carvalho de Melo 14 年之前
父节点
当前提交
171b3be9c4
共有 3 个文件被更改,包括 7 次插入3 次删除
  1. 2 2
      tools/perf/builtin-top.c
  2. 5 0
      tools/perf/util/symbol.h
  3. 0 1
      tools/perf/util/top.h

+ 2 - 2
tools/perf/builtin-top.c

@@ -676,7 +676,7 @@ static int symbol_filter(struct map *map, struct symbol *sym)
 
 
 	for (i = 0; skip_symbols[i]; i++) {
 	for (i = 0; skip_symbols[i]; i++) {
 		if (!strcmp(skip_symbols[i], name)) {
 		if (!strcmp(skip_symbols[i], name)) {
-			syme->skip = 1;
+			sym->ignore = true;
 			break;
 			break;
 		}
 		}
 	}
 	}
@@ -779,7 +779,7 @@ static void perf_event__process_sample(const union perf_event *event,
 	}
 	}
 
 
 	syme = symbol__priv(al.sym);
 	syme = symbol__priv(al.sym);
-	if (!syme->skip) {
+	if (!al.sym->ignore) {
 		struct perf_evsel *evsel;
 		struct perf_evsel *evsel;
 
 
 		evsel = perf_evlist__id2evsel(top.evlist, sample->id);
 		evsel = perf_evlist__id2evsel(top.evlist, sample->id);

+ 5 - 0
tools/perf/util/symbol.h

@@ -48,12 +48,17 @@ char *strxfrchar(char *s, char from, char to);
 
 
 #define BUILD_ID_SIZE 20
 #define BUILD_ID_SIZE 20
 
 
+/** struct symbol - symtab entry
+ *
+ * @ignore - resolvable but tools ignore it (e.g. idle routines)
+ */
 struct symbol {
 struct symbol {
 	struct rb_node	rb_node;
 	struct rb_node	rb_node;
 	u64		start;
 	u64		start;
 	u64		end;
 	u64		end;
 	u16		namelen;
 	u16		namelen;
 	u8		binding;
 	u8		binding;
+	bool		ignore;
 	char		name[0];
 	char		name[0];
 };
 };
 
 

+ 0 - 1
tools/perf/util/top.h

@@ -16,7 +16,6 @@ struct sym_entry {
 	struct list_head	node;
 	struct list_head	node;
 	unsigned long		snap_count;
 	unsigned long		snap_count;
 	double			weight;
 	double			weight;
-	int			skip;
 	struct map		*map;
 	struct map		*map;
 	unsigned long		count[0];
 	unsigned long		count[0];
 };
 };