Lines Matching refs:maps

19 static void __maps__insert(struct maps *maps, struct map *map);
460 static void maps__init(struct maps *maps) in maps__init() argument
462 maps->entries = RB_ROOT; in maps__init()
463 pthread_rwlock_init(&maps->lock, NULL); in maps__init()
470 maps__init(&mg->maps[i]); in map_groups__init()
476 static void __maps__purge(struct maps *maps) in __maps__purge() argument
478 struct rb_root *root = &maps->entries; in __maps__purge()
490 static void maps__exit(struct maps *maps) in maps__exit() argument
492 pthread_rwlock_wrlock(&maps->lock); in maps__exit()
493 __maps__purge(maps); in maps__exit()
494 pthread_rwlock_unlock(&maps->lock); in maps__exit()
502 maps__exit(&mg->maps[i]); in map_groups__exit()
510 if (maps__first(&mg->maps[i])) in map_groups__empty()
556 struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name, in maps__find_symbol_by_name() argument
562 pthread_rwlock_rdlock(&maps->lock); in maps__find_symbol_by_name()
564 for (nd = rb_first(&maps->entries); nd; nd = rb_next(nd)) { in maps__find_symbol_by_name()
578 pthread_rwlock_unlock(&maps->lock); in maps__find_symbol_by_name()
588 struct symbol *sym = maps__find_symbol_by_name(&mg->maps[type], name, mapp, filter); in map_groups__find_symbol_by_name()
610 static size_t maps__fprintf(struct maps *maps, FILE *fp) in maps__fprintf() argument
615 pthread_rwlock_rdlock(&maps->lock); in maps__fprintf()
617 for (nd = rb_first(&maps->entries); nd; nd = rb_next(nd)) { in maps__fprintf()
627 pthread_rwlock_unlock(&maps->lock); in maps__fprintf()
636 return printed += maps__fprintf(&mg->maps[type], fp); in __map_groups__fprintf_maps()
649 __maps__insert(&mg->maps[map->type], map); in __map_groups__insert()
653 static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp) in maps__fixup_overlappings() argument
659 pthread_rwlock_wrlock(&maps->lock); in maps__fixup_overlappings()
661 root = &maps->entries; in maps__fixup_overlappings()
718 pthread_rwlock_unlock(&maps->lock); in maps__fixup_overlappings()
725 return maps__fixup_overlappings(&mg->maps[map->type], map, fp); in map_groups__fixup_overlappings()
736 struct maps *maps = &parent->maps[type]; in map_groups__clone() local
738 pthread_rwlock_rdlock(&maps->lock); in map_groups__clone()
740 for (map = maps__first(maps); map; map = map__next(map)) { in map_groups__clone()
749 pthread_rwlock_unlock(&maps->lock); in map_groups__clone()
753 static void __maps__insert(struct maps *maps, struct map *map) in __maps__insert() argument
755 struct rb_node **p = &maps->entries.rb_node; in __maps__insert()
770 rb_insert_color(&map->rb_node, &maps->entries); in __maps__insert()
774 void maps__insert(struct maps *maps, struct map *map) in maps__insert() argument
776 pthread_rwlock_wrlock(&maps->lock); in maps__insert()
777 __maps__insert(maps, map); in maps__insert()
778 pthread_rwlock_unlock(&maps->lock); in maps__insert()
781 static void __maps__remove(struct maps *maps, struct map *map) in __maps__remove() argument
783 rb_erase_init(&map->rb_node, &maps->entries); in __maps__remove()
787 void maps__remove(struct maps *maps, struct map *map) in maps__remove() argument
789 pthread_rwlock_wrlock(&maps->lock); in maps__remove()
790 __maps__remove(maps, map); in maps__remove()
791 pthread_rwlock_unlock(&maps->lock); in maps__remove()
794 struct map *maps__find(struct maps *maps, u64 ip) in maps__find() argument
799 pthread_rwlock_rdlock(&maps->lock); in maps__find()
801 p = &maps->entries.rb_node; in maps__find()
815 pthread_rwlock_unlock(&maps->lock); in maps__find()
819 struct map *maps__first(struct maps *maps) in maps__first() argument
821 struct rb_node *first = rb_first(&maps->entries); in maps__first()