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 ---