1 /* SPDX-License-Identifier: GPL-2.0 */
5 #include <linux/refcount.h>
6 #include <linux/rbtree.h>
9 #include <linux/types.h>
18 struct map
*maps__find(struct maps
*maps
, u64 addr
);
19 struct map
*maps__first(struct maps
*maps
);
20 struct map
*map__next(struct map
*map
);
22 #define maps__for_each_entry(maps, map) \
23 for (map = maps__first(maps); map; map = map__next(map))
25 #define maps__for_each_entry_safe(maps, map, next) \
26 for (map = maps__first(maps), next = map__next(map); map; map = next, next = map__next(map))
29 struct rb_root entries
;
30 struct rw_semaphore lock
;
31 struct machine
*machine
;
32 struct map
*last_search_by_name
;
33 struct map
**maps_by_name
;
36 unsigned int nr_maps_allocated
;
37 #ifdef HAVE_LIBUNWIND_SUPPORT
39 struct unwind_libunwind_ops
*unwind_libunwind_ops
;
43 #define KMAP_NAME_LEN 256
46 struct ref_reloc_sym
*ref_reloc_sym
;
48 char name
[KMAP_NAME_LEN
];
51 struct maps
*maps__new(struct machine
*machine
);
52 void maps__delete(struct maps
*maps
);
53 bool maps__empty(struct maps
*maps
);
55 static inline struct maps
*maps__get(struct maps
*maps
)
58 refcount_inc(&maps
->refcnt
);
62 void maps__put(struct maps
*maps
);
63 void maps__init(struct maps
*maps
, struct machine
*machine
);
64 void maps__exit(struct maps
*maps
);
65 int maps__clone(struct thread
*thread
, struct maps
*parent
);
66 size_t maps__fprintf(struct maps
*maps
, FILE *fp
);
68 void maps__insert(struct maps
*maps
, struct map
*map
);
70 void maps__remove(struct maps
*maps
, struct map
*map
);
72 struct symbol
*maps__find_symbol(struct maps
*maps
, u64 addr
, struct map
**mapp
);
73 struct symbol
*maps__find_symbol_by_name(struct maps
*maps
, const char *name
, struct map
**mapp
);
75 struct addr_map_symbol
;
77 int maps__find_ams(struct maps
*maps
, struct addr_map_symbol
*ams
);
79 int maps__fixup_overlappings(struct maps
*maps
, struct map
*map
, FILE *fp
);
81 struct map
*maps__find_by_name(struct maps
*maps
, const char *name
);
83 int maps__merge_in(struct maps
*kmaps
, struct map
*new_map
);
85 void __maps__sort_by_name(struct maps
*maps
);
87 #endif // __PERF_MAPS_H