aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/map.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/map.c')
-rw-r--r--tools/perf/util/map.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c
index 39cd2d0faff6..ba5f5c0c838b 100644
--- a/tools/perf/util/map.c
+++ b/tools/perf/util/map.c
@@ -323,6 +323,7 @@ void map_groups__init(struct map_groups *mg)
323 INIT_LIST_HEAD(&mg->removed_maps[i]); 323 INIT_LIST_HEAD(&mg->removed_maps[i]);
324 } 324 }
325 mg->machine = NULL; 325 mg->machine = NULL;
326 mg->refcnt = 1;
326} 327}
327 328
328static void maps__delete(struct rb_root *maps) 329static void maps__delete(struct rb_root *maps)
@@ -358,6 +359,28 @@ void map_groups__exit(struct map_groups *mg)
358 } 359 }
359} 360}
360 361
362struct map_groups *map_groups__new(void)
363{
364 struct map_groups *mg = malloc(sizeof(*mg));
365
366 if (mg != NULL)
367 map_groups__init(mg);
368
369 return mg;
370}
371
372void map_groups__delete(struct map_groups *mg)
373{
374 map_groups__exit(mg);
375 free(mg);
376}
377
378void map_groups__put(struct map_groups *mg)
379{
380 if (--mg->refcnt == 0)
381 map_groups__delete(mg);
382}
383
361void map_groups__flush(struct map_groups *mg) 384void map_groups__flush(struct map_groups *mg)
362{ 385{
363 int type; 386 int type;