Lines Matching full:maps
24 static void __maps__insert(struct maps *maps, struct map *map);
182 /* The vdso maps are always on the host and not the in map__new()
499 static void maps__init(struct maps *maps) in maps__init() argument
501 maps->entries = RB_ROOT; in maps__init()
502 init_rwsem(&maps->lock); in maps__init()
507 maps__init(&mg->maps); in map_groups__init()
512 static void __maps__purge(struct maps *maps) in __maps__purge() argument
514 struct rb_root *root = &maps->entries; in __maps__purge()
526 static void maps__exit(struct maps *maps) in maps__exit() argument
528 down_write(&maps->lock); in maps__exit()
529 __maps__purge(maps); in maps__exit()
530 up_write(&maps->lock); in maps__exit()
535 maps__exit(&mg->maps); in map_groups__exit()
540 return !maps__first(&mg->maps); in map_groups__empty()
587 struct symbol *maps__find_symbol_by_name(struct maps *maps, const char *name, in maps__find_symbol_by_name() argument
593 down_read(&maps->lock); in maps__find_symbol_by_name()
595 for (nd = rb_first(&maps->entries); nd; nd = rb_next(nd)) { in maps__find_symbol_by_name()
613 up_read(&maps->lock); in maps__find_symbol_by_name()
621 return maps__find_symbol_by_name(&mg->maps, name, mapp); in map_groups__find_symbol_by_name()
640 static size_t maps__fprintf(struct maps *maps, FILE *fp) in maps__fprintf() argument
645 down_read(&maps->lock); in maps__fprintf()
647 for (nd = rb_first(&maps->entries); nd; nd = rb_next(nd)) { in maps__fprintf()
657 up_read(&maps->lock); in maps__fprintf()
664 return maps__fprintf(&mg->maps, fp); in map_groups__fprintf()
669 __maps__insert(&mg->maps, map); in __map_groups__insert()
673 static int maps__fixup_overlappings(struct maps *maps, struct map *map, FILE *fp) in maps__fixup_overlappings() argument
679 down_write(&maps->lock); in maps__fixup_overlappings()
681 root = &maps->entries; in maps__fixup_overlappings()
708 * Maps are ordered by start: next will not overlap for sure. in maps__fixup_overlappings()
716 pr_warning("overlapping maps in %s " in maps__fixup_overlappings()
720 fputs("overlapping maps:\n", fp); in maps__fixup_overlappings()
728 * Now check if we need to create new maps for areas not in maps__fixup_overlappings()
771 up_write(&maps->lock); in maps__fixup_overlappings()
778 return maps__fixup_overlappings(&mg->maps, map, fp); in map_groups__fixup_overlappings()
782 * XXX This should not really _copy_ te maps, but refcount them.
789 struct maps *maps = &parent->maps; in map_groups__clone() local
791 down_read(&maps->lock); in map_groups__clone()
793 for (map = maps__first(maps); map; map = map__next(map)) { in map_groups__clone()
808 up_read(&maps->lock); in map_groups__clone()
812 static void __maps__insert(struct maps *maps, struct map *map) in __maps__insert() argument
814 struct rb_node **p = &maps->entries.rb_node; in __maps__insert()
829 rb_insert_color(&map->rb_node, &maps->entries); in __maps__insert()
833 void maps__insert(struct maps *maps, struct map *map) in maps__insert() argument
835 down_write(&maps->lock); in maps__insert()
836 __maps__insert(maps, map); in maps__insert()
837 up_write(&maps->lock); in maps__insert()
840 static void __maps__remove(struct maps *maps, struct map *map) in __maps__remove() argument
842 rb_erase_init(&map->rb_node, &maps->entries); in __maps__remove()
846 void maps__remove(struct maps *maps, struct map *map) in maps__remove() argument
848 down_write(&maps->lock); in maps__remove()
849 __maps__remove(maps, map); in maps__remove()
850 up_write(&maps->lock); in maps__remove()
853 struct map *maps__find(struct maps *maps, u64 ip) in maps__find() argument
858 down_read(&maps->lock); in maps__find()
860 p = &maps->entries.rb_node; in maps__find()
874 up_read(&maps->lock); in maps__find()
878 struct map *maps__first(struct maps *maps) in maps__first() argument
880 struct rb_node *first = rb_first(&maps->entries); in maps__first()