aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/Makefile1
-rw-r--r--tools/perf/util/debug.c1
-rw-r--r--tools/perf/util/event.h65
-rw-r--r--tools/perf/util/map.h73
-rw-r--r--tools/perf/util/probe-finder.h2
5 files changed, 80 insertions, 62 deletions
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 4172c3b0e4a7..fafea0b6f323 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -357,6 +357,7 @@ LIB_H += util/event.h
357LIB_H += util/exec_cmd.h 357LIB_H += util/exec_cmd.h
358LIB_H += util/types.h 358LIB_H += util/types.h
359LIB_H += util/levenshtein.h 359LIB_H += util/levenshtein.h
360LIB_H += util/map.h
360LIB_H += util/parse-options.h 361LIB_H += util/parse-options.h
361LIB_H += util/parse-events.h 362LIB_H += util/parse-events.h
362LIB_H += util/quote.h 363LIB_H += util/quote.h
diff --git a/tools/perf/util/debug.c b/tools/perf/util/debug.c
index 28d520d5a1fb..0905600c3851 100644
--- a/tools/perf/util/debug.c
+++ b/tools/perf/util/debug.c
@@ -9,6 +9,7 @@
9#include "color.h" 9#include "color.h"
10#include "event.h" 10#include "event.h"
11#include "debug.h" 11#include "debug.h"
12#include "util.h"
12 13
13int verbose = 0; 14int verbose = 0;
14int dump_trace = 0; 15int dump_trace = 0;
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
index 690a96d0467c..80fb3653c809 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -1,10 +1,10 @@
1#ifndef __PERF_RECORD_H 1#ifndef __PERF_RECORD_H
2#define __PERF_RECORD_H 2#define __PERF_RECORD_H
3 3
4#include <limits.h>
5
4#include "../perf.h" 6#include "../perf.h"
5#include "util.h" 7#include "map.h"
6#include <linux/list.h>
7#include <linux/rbtree.h>
8 8
9/* 9/*
10 * PERF_SAMPLE_IP | PERF_SAMPLE_TID | * 10 * PERF_SAMPLE_IP | PERF_SAMPLE_TID | *
@@ -101,67 +101,8 @@ struct events_stats {
101 101
102void event__print_totals(void); 102void event__print_totals(void);
103 103
104enum map_type {
105 MAP__FUNCTION = 0,
106 MAP__VARIABLE,
107};
108
109#define MAP__NR_TYPES (MAP__VARIABLE + 1)
110
111struct map {
112 union {
113 struct rb_node rb_node;
114 struct list_head node;
115 };
116 u64 start;
117 u64 end;
118 enum map_type type;
119 u64 pgoff;
120 u64 (*map_ip)(struct map *, u64);
121 u64 (*unmap_ip)(struct map *, u64);
122 struct dso *dso;
123};
124
125static inline u64 map__map_ip(struct map *map, u64 ip)
126{
127 return ip - map->start + map->pgoff;
128}
129
130static inline u64 map__unmap_ip(struct map *map, u64 ip)
131{
132 return ip + map->start - map->pgoff;
133}
134
135static inline u64 identity__map_ip(struct map *map __used, u64 ip)
136{
137 return ip;
138}
139
140struct symbol;
141
142typedef int (*symbol_filter_t)(struct map *map, struct symbol *sym);
143
144void map__init(struct map *self, enum map_type type,
145 u64 start, u64 end, u64 pgoff, struct dso *dso);
146struct map *map__new(struct mmap_event *event, enum map_type,
147 char *cwd, int cwdlen);
148void map__delete(struct map *self);
149struct map *map__clone(struct map *self);
150int map__overlap(struct map *l, struct map *r);
151size_t map__fprintf(struct map *self, FILE *fp);
152
153struct perf_session; 104struct perf_session;
154 105
155int map__load(struct map *self, struct perf_session *session,
156 symbol_filter_t filter);
157struct symbol *map__find_symbol(struct map *self, struct perf_session *session,
158 u64 addr, symbol_filter_t filter);
159struct symbol *map__find_symbol_by_name(struct map *self, const char *name,
160 struct perf_session *session,
161 symbol_filter_t filter);
162void map__fixup_start(struct map *self);
163void map__fixup_end(struct map *self);
164
165int event__synthesize_thread(pid_t pid, 106int event__synthesize_thread(pid_t pid,
166 int (*process)(event_t *event, 107 int (*process)(event_t *event,
167 struct perf_session *session), 108 struct perf_session *session),
diff --git a/tools/perf/util/map.h b/tools/perf/util/map.h
new file mode 100644
index 000000000000..72f0b6ab5ea5
--- /dev/null
+++ b/tools/perf/util/map.h
@@ -0,0 +1,73 @@
1#ifndef __PERF_MAP_H
2#define __PERF_MAP_H
3
4#include <linux/compiler.h>
5#include <linux/list.h>
6#include <linux/rbtree.h>
7#include <linux/types.h>
8
9enum map_type {
10 MAP__FUNCTION = 0,
11 MAP__VARIABLE,
12};
13
14#define MAP__NR_TYPES (MAP__VARIABLE + 1)
15
16struct dso;
17
18struct map {
19 union {
20 struct rb_node rb_node;
21 struct list_head node;
22 };
23 u64 start;
24 u64 end;
25 enum map_type type;
26 u64 pgoff;
27 u64 (*map_ip)(struct map *, u64);
28 u64 (*unmap_ip)(struct map *, u64);
29 struct dso *dso;
30};
31
32static inline u64 map__map_ip(struct map *map, u64 ip)
33{
34 return ip - map->start + map->pgoff;
35}
36
37static inline u64 map__unmap_ip(struct map *map, u64 ip)
38{
39 return ip + map->start - map->pgoff;
40}
41
42static inline u64 identity__map_ip(struct map *map __used, u64 ip)
43{
44 return ip;
45}
46
47struct symbol;
48struct mmap_event;
49
50typedef int (*symbol_filter_t)(struct map *map, struct symbol *sym);
51
52void map__init(struct map *self, enum map_type type,
53 u64 start, u64 end, u64 pgoff, struct dso *dso);
54struct map *map__new(struct mmap_event *event, enum map_type,
55 char *cwd, int cwdlen);
56void map__delete(struct map *self);
57struct map *map__clone(struct map *self);
58int map__overlap(struct map *l, struct map *r);
59size_t map__fprintf(struct map *self, FILE *fp);
60
61struct perf_session;
62
63int map__load(struct map *self, struct perf_session *session,
64 symbol_filter_t filter);
65struct symbol *map__find_symbol(struct map *self, struct perf_session *session,
66 u64 addr, symbol_filter_t filter);
67struct symbol *map__find_symbol_by_name(struct map *self, const char *name,
68 struct perf_session *session,
69 symbol_filter_t filter);
70void map__fixup_start(struct map *self);
71void map__fixup_end(struct map *self);
72
73#endif /* __PERF_MAP_H */
diff --git a/tools/perf/util/probe-finder.h b/tools/perf/util/probe-finder.h
index a4086aaddb73..e3f396806e6e 100644
--- a/tools/perf/util/probe-finder.h
+++ b/tools/perf/util/probe-finder.h
@@ -1,6 +1,8 @@
1#ifndef _PROBE_FINDER_H 1#ifndef _PROBE_FINDER_H
2#define _PROBE_FINDER_H 2#define _PROBE_FINDER_H
3 3
4#include "util.h"
5
4#define MAX_PATH_LEN 256 6#define MAX_PATH_LEN 256
5#define MAX_PROBE_BUFFER 1024 7#define MAX_PROBE_BUFFER 1024
6#define MAX_PROBES 128 8#define MAX_PROBES 128