map.c (b70366e5d31788650b2a5cec5cd13ea80ac7e44a) | map.c (5dfa210e407d0fedf746958bff206995bd46570d) |
---|---|
1#include "symbol.h" 2#include <errno.h> 3#include <inttypes.h> 4#include <limits.h> 5#include <stdlib.h> 6#include <string.h> 7#include <stdio.h> 8#include <unistd.h> --- 127 unchanged lines hidden (view full) --- 136 map->pgoff = pgoff; 137 map->reloc = 0; 138 map->dso = dso__get(dso); 139 map->map_ip = map__map_ip; 140 map->unmap_ip = map__unmap_ip; 141 RB_CLEAR_NODE(&map->rb_node); 142 map->groups = NULL; 143 map->erange_warned = false; | 1#include "symbol.h" 2#include <errno.h> 3#include <inttypes.h> 4#include <limits.h> 5#include <stdlib.h> 6#include <string.h> 7#include <stdio.h> 8#include <unistd.h> --- 127 unchanged lines hidden (view full) --- 136 map->pgoff = pgoff; 137 map->reloc = 0; 138 map->dso = dso__get(dso); 139 map->map_ip = map__map_ip; 140 map->unmap_ip = map__unmap_ip; 141 RB_CLEAR_NODE(&map->rb_node); 142 map->groups = NULL; 143 map->erange_warned = false; |
144 atomic_set(&map->refcnt, 1); | 144 refcount_set(&map->refcnt, 1); |
145} 146 147struct map *map__new(struct machine *machine, u64 start, u64 len, 148 u64 pgoff, u32 pid, u32 d_maj, u32 d_min, u64 ino, 149 u64 ino_gen, u32 prot, u32 flags, char *filename, 150 enum map_type type, struct thread *thread) 151{ 152 struct map *map = malloc(sizeof(*map)); --- 97 unchanged lines hidden (view full) --- 250void map__delete(struct map *map) 251{ 252 map__exit(map); 253 free(map); 254} 255 256void map__put(struct map *map) 257{ | 145} 146 147struct map *map__new(struct machine *machine, u64 start, u64 len, 148 u64 pgoff, u32 pid, u32 d_maj, u32 d_min, u64 ino, 149 u64 ino_gen, u32 prot, u32 flags, char *filename, 150 enum map_type type, struct thread *thread) 151{ 152 struct map *map = malloc(sizeof(*map)); --- 97 unchanged lines hidden (view full) --- 250void map__delete(struct map *map) 251{ 252 map__exit(map); 253 free(map); 254} 255 256void map__put(struct map *map) 257{ |
258 if (map && atomic_dec_and_test(&map->refcnt)) | 258 if (map && refcount_dec_and_test(&map->refcnt)) |
259 map__delete(map); 260} 261 262void map__fixup_start(struct map *map) 263{ 264 struct rb_root *symbols = &map->dso->symbols[map->type]; 265 struct rb_node *nd = rb_first(symbols); 266 if (nd != NULL) { --- 82 unchanged lines hidden (view full) --- 349 return dso__find_symbol_by_name(map->dso, map->type, name); 350} 351 352struct map *map__clone(struct map *from) 353{ 354 struct map *map = memdup(from, sizeof(*map)); 355 356 if (map != NULL) { | 259 map__delete(map); 260} 261 262void map__fixup_start(struct map *map) 263{ 264 struct rb_root *symbols = &map->dso->symbols[map->type]; 265 struct rb_node *nd = rb_first(symbols); 266 if (nd != NULL) { --- 82 unchanged lines hidden (view full) --- 349 return dso__find_symbol_by_name(map->dso, map->type, name); 350} 351 352struct map *map__clone(struct map *from) 353{ 354 struct map *map = memdup(from, sizeof(*map)); 355 356 if (map != NULL) { |
357 atomic_set(&map->refcnt, 1); | 357 refcount_set(&map->refcnt, 1); |
358 RB_CLEAR_NODE(&map->rb_node); 359 dso__get(map->dso); 360 map->groups = NULL; 361 } 362 363 return map; 364} 365 --- 34 unchanged lines hidden (view full) --- 400int map__fprintf_srcline(struct map *map, u64 addr, const char *prefix, 401 FILE *fp) 402{ 403 char *srcline; 404 int ret = 0; 405 406 if (map && map->dso) { 407 srcline = get_srcline(map->dso, | 358 RB_CLEAR_NODE(&map->rb_node); 359 dso__get(map->dso); 360 map->groups = NULL; 361 } 362 363 return map; 364} 365 --- 34 unchanged lines hidden (view full) --- 400int map__fprintf_srcline(struct map *map, u64 addr, const char *prefix, 401 FILE *fp) 402{ 403 char *srcline; 404 int ret = 0; 405 406 if (map && map->dso) { 407 srcline = get_srcline(map->dso, |
408 map__rip_2objdump(map, addr), NULL, true); | 408 map__rip_2objdump(map, addr), NULL, 409 true, true); |
409 if (srcline != SRCLINE_UNKNOWN) 410 ret = fprintf(fp, "%s%s", prefix, srcline); 411 free_srcline(srcline); 412 } 413 return ret; 414} 415 416/** --- 63 unchanged lines hidden (view full) --- 480 481void map_groups__init(struct map_groups *mg, struct machine *machine) 482{ 483 int i; 484 for (i = 0; i < MAP__NR_TYPES; ++i) { 485 maps__init(&mg->maps[i]); 486 } 487 mg->machine = machine; | 410 if (srcline != SRCLINE_UNKNOWN) 411 ret = fprintf(fp, "%s%s", prefix, srcline); 412 free_srcline(srcline); 413 } 414 return ret; 415} 416 417/** --- 63 unchanged lines hidden (view full) --- 481 482void map_groups__init(struct map_groups *mg, struct machine *machine) 483{ 484 int i; 485 for (i = 0; i < MAP__NR_TYPES; ++i) { 486 maps__init(&mg->maps[i]); 487 } 488 mg->machine = machine; |
488 atomic_set(&mg->refcnt, 1); | 489 refcount_set(&mg->refcnt, 1); |
489} 490 491static void __maps__purge(struct maps *maps) 492{ 493 struct rb_root *root = &maps->entries; 494 struct rb_node *next = rb_first(root); 495 496 while (next) { --- 45 unchanged lines hidden (view full) --- 542void map_groups__delete(struct map_groups *mg) 543{ 544 map_groups__exit(mg); 545 free(mg); 546} 547 548void map_groups__put(struct map_groups *mg) 549{ | 490} 491 492static void __maps__purge(struct maps *maps) 493{ 494 struct rb_root *root = &maps->entries; 495 struct rb_node *next = rb_first(root); 496 497 while (next) { --- 45 unchanged lines hidden (view full) --- 543void map_groups__delete(struct map_groups *mg) 544{ 545 map_groups__exit(mg); 546 free(mg); 547} 548 549void map_groups__put(struct map_groups *mg) 550{ |
550 if (mg && atomic_dec_and_test(&mg->refcnt)) | 551 if (mg && refcount_dec_and_test(&mg->refcnt)) |
551 map_groups__delete(mg); 552} 553 554struct symbol *map_groups__find_symbol(struct map_groups *mg, 555 enum map_type type, u64 addr, 556 struct map **mapp) 557{ 558 struct map *map = map_groups__find(mg, type, addr); --- 326 unchanged lines hidden --- | 552 map_groups__delete(mg); 553} 554 555struct symbol *map_groups__find_symbol(struct map_groups *mg, 556 enum map_type type, u64 addr, 557 struct map **mapp) 558{ 559 struct map *map = map_groups__find(mg, type, addr); --- 326 unchanged lines hidden --- |