Lines Matching refs:mg
416 void map_groups__init(struct map_groups *mg, struct machine *machine) in map_groups__init() argument
420 mg->maps[i] = RB_ROOT; in map_groups__init()
421 INIT_LIST_HEAD(&mg->removed_maps[i]); in map_groups__init()
423 mg->machine = machine; in map_groups__init()
424 mg->refcnt = 1; in map_groups__init()
450 void map_groups__exit(struct map_groups *mg) in map_groups__exit() argument
455 maps__delete(&mg->maps[i]); in map_groups__exit()
456 maps__delete_removed(&mg->removed_maps[i]); in map_groups__exit()
460 bool map_groups__empty(struct map_groups *mg) in map_groups__empty() argument
465 if (maps__first(&mg->maps[i])) in map_groups__empty()
467 if (!list_empty(&mg->removed_maps[i])) in map_groups__empty()
476 struct map_groups *mg = malloc(sizeof(*mg)); in map_groups__new() local
478 if (mg != NULL) in map_groups__new()
479 map_groups__init(mg, machine); in map_groups__new()
481 return mg; in map_groups__new()
484 void map_groups__delete(struct map_groups *mg) in map_groups__delete() argument
486 map_groups__exit(mg); in map_groups__delete()
487 free(mg); in map_groups__delete()
490 void map_groups__put(struct map_groups *mg) in map_groups__put() argument
492 if (--mg->refcnt == 0) in map_groups__put()
493 map_groups__delete(mg); in map_groups__put()
496 void map_groups__flush(struct map_groups *mg) in map_groups__flush() argument
501 struct rb_root *root = &mg->maps[type]; in map_groups__flush()
513 list_add_tail(&pos->node, &mg->removed_maps[pos->type]); in map_groups__flush()
518 struct symbol *map_groups__find_symbol(struct map_groups *mg, in map_groups__find_symbol() argument
523 struct map *map = map_groups__find(mg, type, addr); in map_groups__find_symbol()
535 struct symbol *map_groups__find_symbol_by_name(struct map_groups *mg, in map_groups__find_symbol_by_name() argument
543 for (nd = rb_first(&mg->maps[type]); nd; nd = rb_next(nd)) { in map_groups__find_symbol_by_name()
574 size_t __map_groups__fprintf_maps(struct map_groups *mg, enum map_type type, in __map_groups__fprintf_maps() argument
580 for (nd = rb_first(&mg->maps[type]); nd; nd = rb_next(nd)) { in __map_groups__fprintf_maps()
593 static size_t map_groups__fprintf_maps(struct map_groups *mg, FILE *fp) in map_groups__fprintf_maps() argument
597 printed += __map_groups__fprintf_maps(mg, i, fp); in map_groups__fprintf_maps()
601 static size_t __map_groups__fprintf_removed_maps(struct map_groups *mg, in __map_groups__fprintf_removed_maps() argument
607 list_for_each_entry(pos, &mg->removed_maps[type], node) { in __map_groups__fprintf_removed_maps()
618 static size_t map_groups__fprintf_removed_maps(struct map_groups *mg, in map_groups__fprintf_removed_maps() argument
623 printed += __map_groups__fprintf_removed_maps(mg, i, fp); in map_groups__fprintf_removed_maps()
627 size_t map_groups__fprintf(struct map_groups *mg, FILE *fp) in map_groups__fprintf() argument
629 size_t printed = map_groups__fprintf_maps(mg, fp); in map_groups__fprintf()
631 return printed + map_groups__fprintf_removed_maps(mg, fp); in map_groups__fprintf()
634 int map_groups__fixup_overlappings(struct map_groups *mg, struct map *map, in map_groups__fixup_overlappings() argument
637 struct rb_root *root = &mg->maps[map->type]; in map_groups__fixup_overlappings()
668 map_groups__insert(mg, before); in map_groups__fixup_overlappings()
682 map_groups__insert(mg, after); in map_groups__fixup_overlappings()
691 list_add_tail(&pos->node, &mg->removed_maps[map->type]); in map_groups__fixup_overlappings()
705 int map_groups__clone(struct map_groups *mg, in map_groups__clone() argument
714 map_groups__insert(mg, new); in map_groups__clone()