Lines Matching refs:map

32 	struct map	 **maps_by_address;  in DECLARE_RC_STRUCT()
37 struct map **maps_by_name; in DECLARE_RC_STRUCT()
72 struct map *map = RC_CHK_ACCESS(maps)->maps_by_address[i]; in check_invariants() local
75 assert(map__end(map) == 0 || map__start(map) <= map__end(map)); in check_invariants()
77 assert(refcount_read(map__refcnt(map)) > 0); in check_invariants()
79 if (map__dso(map) && dso__kernel(map__dso(map))) in check_invariants()
80 assert(RC_CHK_EQUAL(map__kmap(map)->kmaps, maps)); in check_invariants()
83 struct map *prev = RC_CHK_ACCESS(maps)->maps_by_address[i - 1]; in check_invariants()
88 assert(map__start(prev) <= map__start(map)); in check_invariants()
95 assert(map__end(prev) <= map__end(map)); in check_invariants()
96 assert(map__end(prev) <= map__start(map) || in check_invariants()
97 map__start(prev) == map__start(map)); in check_invariants()
104 struct map *map = RC_CHK_ACCESS(maps)->maps_by_name[i]; in check_invariants() local
110 assert(refcount_read(map__refcnt(map)) > 1); in check_invariants()
116 static struct map **maps__maps_by_address(const struct maps *maps) in maps__maps_by_address()
121 static void maps__set_maps_by_address(struct maps *maps, struct map **new) in maps__set_maps_by_address()
138 static struct map **maps__maps_by_name(const struct maps *maps) in maps__maps_by_name()
144 static void maps__set_maps_by_name(struct maps *maps, struct map **new) in maps__set_maps_by_name()
232 struct map **maps_by_address = maps__maps_by_address(maps); in maps__exit()
233 struct map **maps_by_name = maps__maps_by_name(maps); in maps__exit()
299 const struct map *map_a = *(const struct map * const *)a; in map__start_cmp()
300 const struct map *map_b = *(const struct map * const *)b; in map__start_cmp()
327 sizeof(struct map *), in __maps__sort_by_address()
341 const struct map *map_a = *(const struct map * const *)a; in map__strcmp()
342 const struct map *map_b = *(const struct map * const *)b; in map__strcmp()
360 struct map **maps_by_name = maps__maps_by_name(maps); in maps__sort_by_name()
368 struct map **maps_by_address = maps__maps_by_address(maps); in maps__sort_by_name()
379 sizeof(struct map *), in maps__sort_by_name()
389 static unsigned int maps__by_address_index(const struct maps *maps, const struct map *map) in maps__by_address_index() argument
391 struct map **maps_by_address = maps__maps_by_address(maps); in maps__by_address_index()
394 struct map **mapp = in maps__by_address_index()
395 bsearch(&map, maps__maps_by_address(maps), maps__nr_maps(maps), in maps__by_address_index()
402 if (RC_CHK_ACCESS(maps_by_address[i]) == RC_CHK_ACCESS(map)) in maps__by_address_index()
410 static unsigned int maps__by_name_index(const struct maps *maps, const struct map *map) in maps__by_name_index() argument
412 struct map **maps_by_name = maps__maps_by_name(maps); in maps__by_name_index()
415 struct map **mapp = in maps__by_name_index()
416 bsearch(&map, maps_by_name, maps__nr_maps(maps), in maps__by_name_index()
423 if (RC_CHK_ACCESS(maps_by_name[i]) == RC_CHK_ACCESS(map)) in maps__by_name_index()
431 static void map__set_kmap_maps(struct map *map, struct maps *maps) in map__set_kmap_maps() argument
435 if (map == NULL) in map__set_kmap_maps()
438 dso = map__dso(map); in map__set_kmap_maps()
441 struct kmap *kmap = map__kmap(map); in map__set_kmap_maps()
450 static int __maps__insert(struct maps *maps, struct map *new) in __maps__insert()
452 struct map **maps_by_address = maps__maps_by_address(maps); in __maps__insert()
453 struct map **maps_by_name = maps__maps_by_name(maps); in __maps__insert()
510 int maps__insert(struct maps *maps, struct map *map) in maps__insert() argument
515 ret = __maps__insert(maps, map); in maps__insert()
521 static void __maps__remove(struct maps *maps, struct map *map) in __maps__remove() argument
523 struct map **maps_by_address = maps__maps_by_address(maps); in __maps__remove()
524 struct map **maps_by_name = maps__maps_by_name(maps); in __maps__remove()
529 address_idx = maps__by_address_index(maps, map); in __maps__remove()
536 unsigned int name_idx = maps__by_name_index(maps, map); in __maps__remove()
547 void maps__remove(struct maps *maps, struct map *map) in maps__remove() argument
550 __maps__remove(maps, map); in maps__remove()
571 int maps__for_each_map(struct maps *maps, int (*cb)(struct map *map, void *data), void *data) in maps__for_each_map() argument
589 struct map **maps_by_address = maps__maps_by_address(maps); in maps__for_each_map()
590 struct map *map = maps_by_address[i]; in maps__for_each_map() local
592 ret = cb(map, data); in maps__for_each_map()
605 void maps__remove_maps(struct maps *maps, bool (*cb)(struct map *map, void *data), void *data) in maps__remove_maps() argument
607 struct map **maps_by_address; in maps__remove_maps()
622 struct symbol *maps__find_symbol(struct maps *maps, u64 addr, struct map **mapp) in maps__find_symbol()
624 struct map *map = maps__find(maps, addr); in maps__find_symbol() local
628 if (map != NULL && map__load(map) >= 0) in maps__find_symbol()
629 result = map__find_symbol(map, map__map_ip(map, addr)); in maps__find_symbol()
632 *mapp = map; in maps__find_symbol()
634 map__put(map); in maps__find_symbol()
640 struct map **mapp;
645 static int maps__find_symbol_by_name_cb(struct map *map, void *data) in maps__find_symbol_by_name_cb() argument
649 args->sym = map__find_symbol_by_name(map, args->name); in maps__find_symbol_by_name_cb()
653 if (!map__contains_symbol(map, args->sym)) { in maps__find_symbol_by_name_cb()
659 *args->mapp = map__get(map); in maps__find_symbol_by_name_cb()
663 struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name, struct map **mapp) in maps__find_symbol_by_name()
677 if (ams->addr < map__start(ams->ms.map) || ams->addr >= map__end(ams->ms.map)) { in maps__find_ams()
680 ams->ms.map = maps__find(maps, ams->addr); in maps__find_ams()
681 if (ams->ms.map == NULL) in maps__find_ams()
685 ams->al_addr = map__map_ip(ams->ms.map, ams->addr); in maps__find_ams()
686 ams->ms.sym = map__find_symbol(ams->ms.map, ams->al_addr); in maps__find_ams()
696 static int maps__fprintf_cb(struct map *map, void *data) in maps__fprintf_cb() argument
701 args->printed += map__fprintf(map, args->fp); in maps__fprintf_cb()
703 args->printed += dso__fprintf(map__dso(map), args->fp); in maps__fprintf_cb()
725 static unsigned int first_ending_after(struct maps *maps, const struct map *map) in first_ending_after() argument
727 struct map **maps_by_address = maps__maps_by_address(maps); in first_ending_after()
731 if (low <= high && map__end(maps_by_address[0]) > map__start(map)) in first_ending_after()
736 struct map *pos = maps_by_address[mid]; in first_ending_after()
738 if (map__end(pos) > map__start(map)) { in first_ending_after()
740 if (map__start(pos) <= map__start(map)) { in first_ending_after()
752 struct map *new1, struct map *new2) in __maps__insert_sorted()
754 struct map **maps_by_address = maps__maps_by_address(maps); in __maps__insert_sorted()
755 struct map **maps_by_name = maps__maps_by_name(maps); in __maps__insert_sorted()
812 static int __maps__fixup_overlap_and_insert(struct maps *maps, struct map *new) in __maps__fixup_overlap_and_insert()
826 struct map **maps_by_address = maps__maps_by_address(maps); in __maps__fixup_overlap_and_insert()
827 struct map **maps_by_name = maps__maps_by_name(maps); in __maps__fixup_overlap_and_insert()
828 struct map *pos = maps_by_address[i]; in __maps__fixup_overlap_and_insert()
829 struct map *before = NULL, *after = NULL; in __maps__fixup_overlap_and_insert()
932 struct map *next = NULL; in __maps__fixup_overlap_and_insert()
970 int maps__fixup_overlap_and_insert(struct maps *maps, struct map *new) in maps__fixup_overlap_and_insert()
983 struct map **parent_maps_by_address; in maps__copy_from()
995 struct map **dest_maps_by_address = in maps__copy_from()
996 malloc(nr_maps_allocated * sizeof(struct map *)); in maps__copy_from()
997 struct map **dest_maps_by_name = NULL; in maps__copy_from()
1004 malloc(nr_maps_allocated * sizeof(struct map *)); in maps__copy_from()
1013 struct map *pos = parent_maps_by_address[i]; in maps__copy_from()
1014 struct map *new = map__clone(pos); in maps__copy_from()
1044 struct map *pos = parent_maps_by_address[i]; in maps__copy_from()
1045 struct map *new = map__clone(pos); in maps__copy_from()
1067 const struct map *map = *(const struct map * const *)entry; in map__addr_cmp() local
1069 if (ip < map__start(map)) in map__addr_cmp()
1071 if (ip >= map__end(map)) in map__addr_cmp()
1076 struct map *maps__find(struct maps *maps, u64 ip) in maps__find()
1078 struct map *result = NULL; in maps__find()
1085 struct map **mapp = NULL; in maps__find()
1086 struct map **maps_by_address = maps__maps_by_address(maps); in maps__find()
1105 const struct dso *dso = map__dso(*(const struct map **)b); in map__strcmp_name()
1110 struct map *maps__find_by_name(struct maps *maps, const char *name) in maps__find_by_name()
1112 struct map *result = NULL; in maps__find_by_name()
1134 struct map **mapp = in maps__find_by_name()
1153 struct map **maps_by_address; in maps__find_by_name()
1160 struct map *pos = maps_by_address[i]; in maps__find_by_name()
1176 struct map *maps__find_next_entry(struct maps *maps, struct map *map) in maps__find_next_entry() argument
1179 struct map *result = NULL; in maps__find_next_entry()
1187 i = maps__by_address_index(maps, map); in maps__find_next_entry()
1197 struct map **maps_by_address; in maps__fixup_end()
1207 struct map *prev = maps_by_address[i - 1]; in maps__fixup_end()
1208 struct map *curr = maps_by_address[i]; in maps__fixup_end()
1231 int maps__merge_in(struct maps *kmaps, struct map *new_map) in maps__merge_in()
1234 struct map **kmaps_maps_by_address; in maps__merge_in()
1235 struct map **merged_maps_by_address; in maps__merge_in()