aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/map.h
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2015-06-15 23:29:51 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-06-16 10:34:38 -0300
commit5c24b67aae72f54c5d2a6898be4bae9726df63bb (patch)
tree14cf53530c0b85b7e1cb5599c62be9a059ab978b /tools/perf/util/map.h
parentperf probe: Cut off the gcc optimization postfixes from function name (diff)
downloadlinux-dev-5c24b67aae72f54c5d2a6898be4bae9726df63bb.tar.xz
linux-dev-5c24b67aae72f54c5d2a6898be4bae9726df63bb.zip
perf tools: Replace map->referenced & maps->removed_maps with map->refcnt
Use just reference counts, so that when no more hist_entry instances references a map and the thread instance goes away by processing a PERF_RECORD_EXIT, we can delete the maps. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Borislav Petkov <bp@suse.de> Cc: David Ahern <dsahern@gmail.com> Cc: Don Zickus <dzickus@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-oym7lfhcc7ss6xpz44h7nbxs@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to '')
-rw-r--r--tools/perf/util/map.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/perf/util/map.h b/tools/perf/util/map.h
index b8df09d94aca..d73e687b224e 100644
--- a/tools/perf/util/map.h
+++ b/tools/perf/util/map.h
@@ -34,7 +34,6 @@ struct map {
u64 start;
u64 end;
u8 /* enum map_type */ type;
- bool referenced;
bool erange_warned;
u32 priv;
u32 prot;
@@ -63,7 +62,6 @@ struct kmap {
struct maps {
struct rb_root entries;
pthread_rwlock_t lock;
- struct list_head removed_maps;
};
struct map_groups {
@@ -161,6 +159,14 @@ static inline struct map *map__get(struct map *map)
void map__put(struct map *map);
+static inline void __map__zput(struct map **map)
+{
+ map__put(*map);
+ *map = NULL;
+}
+
+#define map__zput(map) __map__zput(&map)
+
int map__overlap(struct map *l, struct map *r);
size_t map__fprintf(struct map *map, FILE *fp);
size_t map__fprintf_dsoname(struct map *map, FILE *fp);