diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-10-23 08:23:20 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-10-23 08:23:20 +0200 |
commit | 43315956509ca6913764861ac7dec128b91eb1ec (patch) | |
tree | 60fd5647f150a46e63093a41417c2eef3e776b3d /tools/perf/util/event.h | |
parent | 9bf4e7fba8006d19846fec877b6da0616b2772de (diff) | |
parent | 6beba7adbe092e63dfe8d09fbd1e3ec140474a13 (diff) | |
download | op-kernel-dev-43315956509ca6913764861ac7dec128b91eb1ec.zip op-kernel-dev-43315956509ca6913764861ac7dec128b91eb1ec.tar.gz |
Merge branch 'perf/core' into perf/probes
Conflicts:
tools/perf/Makefile
Merge reason:
- fix the conflict
- pick up the pr_*() infrastructure to queue up dependent patch
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util/event.h')
-rw-r--r-- | tools/perf/util/event.h | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h index 2c9c26d6..d972b4b 100644 --- a/tools/perf/util/event.h +++ b/tools/perf/util/event.h @@ -1,14 +1,10 @@ #ifndef __PERF_RECORD_H #define __PERF_RECORD_H + #include "../perf.h" #include "util.h" #include <linux/list.h> - -enum { - SHOW_KERNEL = 1, - SHOW_USER = 2, - SHOW_HV = 4, -}; +#include <linux/rbtree.h> /* * PERF_SAMPLE_IP | PERF_SAMPLE_TID | * @@ -78,11 +74,15 @@ typedef union event_union { } event_t; struct map { - struct list_head node; + union { + struct rb_node rb_node; + struct list_head node; + }; u64 start; u64 end; u64 pgoff; u64 (*map_ip)(struct map *, u64); + u64 (*unmap_ip)(struct map *, u64); struct dso *dso; }; @@ -91,14 +91,24 @@ static inline u64 map__map_ip(struct map *map, u64 ip) return ip - map->start + map->pgoff; } -static inline u64 vdso__map_ip(struct map *map __used, u64 ip) +static inline u64 map__unmap_ip(struct map *map, u64 ip) +{ + return ip + map->start - map->pgoff; +} + +static inline u64 identity__map_ip(struct map *map __used, u64 ip) { return ip; } -struct map *map__new(struct mmap_event *event, char *cwd, int cwdlen); +struct symbol; + +typedef int (*symbol_filter_t)(struct map *map, struct symbol *sym); + +struct map *map__new(struct mmap_event *event, char *cwd, int cwdlen, + unsigned int sym_priv_size, symbol_filter_t filter); struct map *map__clone(struct map *self); int map__overlap(struct map *l, struct map *r); size_t map__fprintf(struct map *self, FILE *fp); -#endif +#endif /* __PERF_RECORD_H */ |