1 /* SPDX-License-Identifier: GPL-2.0 */
5 #include <linux/refcount.h>
8 #include <linux/types.h>
15 #define KMAP_NAME_LEN 256
18 struct ref_reloc_sym
*ref_reloc_sym
;
20 char name
[KMAP_NAME_LEN
];
23 struct maps
*maps__new(struct machine
*machine
);
24 bool maps__empty(struct maps
*maps
);
25 int maps__copy_from(struct maps
*maps
, struct maps
*parent
);
27 struct maps
*maps__get(struct maps
*maps
);
28 void maps__put(struct maps
*maps
);
30 static inline void __maps__zput(struct maps
**map
)
36 #define maps__zput(map) __maps__zput(&map)
38 bool maps__equal(struct maps
*a
, struct maps
*b
);
40 /* Iterate over map calling cb for each entry. */
41 int maps__for_each_map(struct maps
*maps
, int (*cb
)(struct map
*map
, void *data
), void *data
);
42 /* Iterate over map removing an entry if cb returns true. */
43 void maps__remove_maps(struct maps
*maps
, bool (*cb
)(struct map
*map
, void *data
), void *data
);
45 struct machine
*maps__machine(const struct maps
*maps
);
46 unsigned int maps__nr_maps(const struct maps
*maps
); /* Test only. */
47 refcount_t
*maps__refcnt(struct maps
*maps
); /* Test only. */
49 #ifdef HAVE_LIBUNWIND_SUPPORT
50 void *maps__addr_space(const struct maps
*maps
);
51 void maps__set_addr_space(struct maps
*maps
, void *addr_space
);
52 const struct unwind_libunwind_ops
*maps__unwind_libunwind_ops(const struct maps
*maps
);
53 void maps__set_unwind_libunwind_ops(struct maps
*maps
, const struct unwind_libunwind_ops
*ops
);
56 size_t maps__fprintf(struct maps
*maps
, FILE *fp
);
58 int maps__insert(struct maps
*maps
, struct map
*map
);
59 void maps__remove(struct maps
*maps
, struct map
*map
);
61 struct map
*maps__find(struct maps
*maps
, u64 addr
);
62 struct symbol
*maps__find_symbol(struct maps
*maps
, u64 addr
, struct map
**mapp
);
63 struct symbol
*maps__find_symbol_by_name(struct maps
*maps
, const char *name
, struct map
**mapp
);
65 struct addr_map_symbol
;
67 int maps__find_ams(struct maps
*maps
, struct addr_map_symbol
*ams
);
69 int maps__fixup_overlap_and_insert(struct maps
*maps
, struct map
*new);
71 struct map
*maps__find_by_name(struct maps
*maps
, const char *name
);
73 struct map
*maps__find_next_entry(struct maps
*maps
, struct map
*map
);
75 int maps__merge_in(struct maps
*kmaps
, struct map
*new_map
);
77 void maps__fixup_end(struct maps
*maps
);
79 void maps__load_first(struct maps
*maps
);
81 #endif // __PERF_MAPS_H