diff options
Diffstat (limited to 'tools/perf/util/map.c')
| -rw-r--r-- | tools/perf/util/map.c | 23 |
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 | ||
| 328 | static void maps__delete(struct rb_root *maps) | 329 | static 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 | ||
| 362 | struct 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 | |||
| 372 | void map_groups__delete(struct map_groups *mg) | ||
| 373 | { | ||
| 374 | map_groups__exit(mg); | ||
| 375 | free(mg); | ||
| 376 | } | ||
| 377 | |||
| 378 | void map_groups__put(struct map_groups *mg) | ||
| 379 | { | ||
| 380 | if (--mg->refcnt == 0) | ||
| 381 | map_groups__delete(mg); | ||
| 382 | } | ||
| 383 | |||
| 361 | void map_groups__flush(struct map_groups *mg) | 384 | void map_groups__flush(struct map_groups *mg) |
| 362 | { | 385 | { |
| 363 | int type; | 386 | int type; |
