Lines Matching refs:maps
28 static void __maps__insert(struct maps *maps, struct map *map);
29 static void __maps__insert_name(struct maps *maps, struct map *map);
575 static void maps__init(struct maps *maps) in maps__init() argument
577 maps->entries = RB_ROOT; in maps__init()
578 maps->names = RB_ROOT; in maps__init()
579 init_rwsem(&maps->lock); in maps__init()
584 maps__init(&mg->maps); in map_groups__init()
591 maps__insert(&mg->maps, map); in map_groups__insert()
595 static void __maps__purge(struct maps *maps) in __maps__purge() argument
597 struct rb_root *root = &maps->entries; in __maps__purge()
609 static void __maps__purge_names(struct maps *maps) in __maps__purge_names() argument
611 struct rb_root *root = &maps->names; in __maps__purge_names()
623 static void maps__exit(struct maps *maps) in maps__exit() argument
625 down_write(&maps->lock); in maps__exit()
626 __maps__purge(maps); in maps__exit()
627 __maps__purge_names(maps); in maps__exit()
628 up_write(&maps->lock); in maps__exit()
633 maps__exit(&mg->maps); in map_groups__exit()
638 return !maps__first(&mg->maps); in map_groups__empty()
686 struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name, in maps__find_symbol_by_name() argument
692 down_read(&maps->lock); in maps__find_symbol_by_name()
694 for (nd = rb_first(&maps->entries); nd; nd = rb_next(nd)) { in maps__find_symbol_by_name()
712 up_read(&maps->lock); in maps__find_symbol_by_name()
720 return maps__find_symbol_by_name(&mg->maps, name, mapp); in map_groups__find_symbol_by_name()
739 static size_t maps__fprintf(struct maps *maps, FILE *fp) in maps__fprintf() argument
744 down_read(&maps->lock); in maps__fprintf()
746 for (nd = rb_first(&maps->entries); nd; nd = rb_next(nd)) { in maps__fprintf()
756 up_read(&maps->lock); in maps__fprintf()
763 return maps__fprintf(&mg->maps, fp); in map_groups__fprintf()
768 __maps__insert(&mg->maps, map); in __map_groups__insert()
769 __maps__insert_name(&mg->maps, map); in __map_groups__insert()
773 static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp) in maps__fixup_overlappings() argument
779 down_write(&maps->lock); in maps__fixup_overlappings()
781 root = &maps->entries; in maps__fixup_overlappings()
870 up_write(&maps->lock); in maps__fixup_overlappings()
877 return maps__fixup_overlappings(&mg->maps, map, fp); in map_groups__fixup_overlappings()
888 struct maps *maps = &parent->maps; in map_groups__clone() local
890 down_read(&maps->lock); in map_groups__clone()
892 for (map = maps__first(maps); map; map = map__next(map)) { in map_groups__clone()
907 up_read(&maps->lock); in map_groups__clone()
911 static void __maps__insert(struct maps *maps, struct map *map) in __maps__insert() argument
913 struct rb_node **p = &maps->entries.rb_node; in __maps__insert()
928 rb_insert_color(&map->rb_node, &maps->entries); in __maps__insert()
932 static void __maps__insert_name(struct maps *maps, struct map *map) in __maps__insert_name() argument
934 struct rb_node **p = &maps->names.rb_node; in __maps__insert_name()
949 rb_insert_color(&map->rb_node_name, &maps->names); in __maps__insert_name()
953 void maps__insert(struct maps *maps, struct map *map) in maps__insert() argument
955 down_write(&maps->lock); in maps__insert()
956 __maps__insert(maps, map); in maps__insert()
957 __maps__insert_name(maps, map); in maps__insert()
958 up_write(&maps->lock); in maps__insert()
961 static void __maps__remove(struct maps *maps, struct map *map) in __maps__remove() argument
963 rb_erase_init(&map->rb_node, &maps->entries); in __maps__remove()
966 rb_erase_init(&map->rb_node_name, &maps->names); in __maps__remove()
970 void maps__remove(struct maps *maps, struct map *map) in maps__remove() argument
972 down_write(&maps->lock); in maps__remove()
973 __maps__remove(maps, map); in maps__remove()
974 up_write(&maps->lock); in maps__remove()
977 struct map *maps__find(struct maps *maps, u64 ip) in maps__find() argument
982 down_read(&maps->lock); in maps__find()
984 p = maps->entries.rb_node; in maps__find()
997 up_read(&maps->lock); in maps__find()
1001 struct map *maps__first(struct maps *maps) in maps__first() argument
1003 struct rb_node *first = rb_first(&maps->entries); in maps__first()