aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/bpf-loader.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/bpf-loader.h')
-rw-r--r--tools/perf/util/bpf-loader.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/tools/perf/util/bpf-loader.h b/tools/perf/util/bpf-loader.h
index 6fdc0457e2b6..be4311944e3d 100644
--- a/tools/perf/util/bpf-loader.h
+++ b/tools/perf/util/bpf-loader.h
@@ -10,6 +10,7 @@
10#include <string.h> 10#include <string.h>
11#include <bpf/libbpf.h> 11#include <bpf/libbpf.h>
12#include "probe-event.h" 12#include "probe-event.h"
13#include "evlist.h"
13#include "debug.h" 14#include "debug.h"
14 15
15enum bpf_loader_errno { 16enum bpf_loader_errno {
@@ -24,10 +25,25 @@ enum bpf_loader_errno {
24 BPF_LOADER_ERRNO__PROLOGUE, /* Failed to generate prologue */ 25 BPF_LOADER_ERRNO__PROLOGUE, /* Failed to generate prologue */
25 BPF_LOADER_ERRNO__PROLOGUE2BIG, /* Prologue too big for program */ 26 BPF_LOADER_ERRNO__PROLOGUE2BIG, /* Prologue too big for program */
26 BPF_LOADER_ERRNO__PROLOGUEOOB, /* Offset out of bound for prologue */ 27 BPF_LOADER_ERRNO__PROLOGUEOOB, /* Offset out of bound for prologue */
28 BPF_LOADER_ERRNO__OBJCONF_OPT, /* Invalid object config option */
29 BPF_LOADER_ERRNO__OBJCONF_CONF, /* Config value not set (lost '=')) */
30 BPF_LOADER_ERRNO__OBJCONF_MAP_OPT, /* Invalid object map config option */
31 BPF_LOADER_ERRNO__OBJCONF_MAP_NOTEXIST, /* Target map not exist */
32 BPF_LOADER_ERRNO__OBJCONF_MAP_VALUE, /* Incorrect value type for map */
33 BPF_LOADER_ERRNO__OBJCONF_MAP_TYPE, /* Incorrect map type */
34 BPF_LOADER_ERRNO__OBJCONF_MAP_KEYSIZE, /* Incorrect map key size */
35 BPF_LOADER_ERRNO__OBJCONF_MAP_VALUESIZE,/* Incorrect map value size */
36 BPF_LOADER_ERRNO__OBJCONF_MAP_NOEVT, /* Event not found for map setting */
37 BPF_LOADER_ERRNO__OBJCONF_MAP_MAPSIZE, /* Invalid map size for event setting */
38 BPF_LOADER_ERRNO__OBJCONF_MAP_EVTDIM, /* Event dimension too large */
39 BPF_LOADER_ERRNO__OBJCONF_MAP_EVTINH, /* Doesn't support inherit event */
40 BPF_LOADER_ERRNO__OBJCONF_MAP_EVTTYPE, /* Wrong event type for map */
41 BPF_LOADER_ERRNO__OBJCONF_MAP_IDX2BIG, /* Index too large */
27 __BPF_LOADER_ERRNO__END, 42 __BPF_LOADER_ERRNO__END,
28}; 43};
29 44
30struct bpf_object; 45struct bpf_object;
46struct parse_events_term;
31#define PERF_BPF_PROBE_GROUP "perf_bpf_probe" 47#define PERF_BPF_PROBE_GROUP "perf_bpf_probe"
32 48
33typedef int (*bpf_prog_iter_callback_t)(struct probe_trace_event *tev, 49typedef int (*bpf_prog_iter_callback_t)(struct probe_trace_event *tev,
@@ -53,6 +69,16 @@ int bpf__strerror_load(struct bpf_object *obj, int err,
53 char *buf, size_t size); 69 char *buf, size_t size);
54int bpf__foreach_tev(struct bpf_object *obj, 70int bpf__foreach_tev(struct bpf_object *obj,
55 bpf_prog_iter_callback_t func, void *arg); 71 bpf_prog_iter_callback_t func, void *arg);
72
73int bpf__config_obj(struct bpf_object *obj, struct parse_events_term *term,
74 struct perf_evlist *evlist, int *error_pos);
75int bpf__strerror_config_obj(struct bpf_object *obj,
76 struct parse_events_term *term,
77 struct perf_evlist *evlist,
78 int *error_pos, int err, char *buf,
79 size_t size);
80int bpf__apply_obj_config(void);
81int bpf__strerror_apply_obj_config(int err, char *buf, size_t size);
56#else 82#else
57static inline struct bpf_object * 83static inline struct bpf_object *
58bpf__prepare_load(const char *filename __maybe_unused, 84bpf__prepare_load(const char *filename __maybe_unused,
@@ -84,6 +110,21 @@ bpf__foreach_tev(struct bpf_object *obj __maybe_unused,
84} 110}
85 111
86static inline int 112static inline int
113bpf__config_obj(struct bpf_object *obj __maybe_unused,
114 struct parse_events_term *term __maybe_unused,
115 struct perf_evlist *evlist __maybe_unused,
116 int *error_pos __maybe_unused)
117{
118 return 0;
119}
120
121static inline int
122bpf__apply_obj_config(void)
123{
124 return 0;
125}
126
127static inline int
87__bpf_strerror(char *buf, size_t size) 128__bpf_strerror(char *buf, size_t size)
88{ 129{
89 if (!size) 130 if (!size)
@@ -118,5 +159,23 @@ static inline int bpf__strerror_load(struct bpf_object *obj __maybe_unused,
118{ 159{
119 return __bpf_strerror(buf, size); 160 return __bpf_strerror(buf, size);
120} 161}
162
163static inline int
164bpf__strerror_config_obj(struct bpf_object *obj __maybe_unused,
165 struct parse_events_term *term __maybe_unused,
166 struct perf_evlist *evlist __maybe_unused,
167 int *error_pos __maybe_unused,
168 int err __maybe_unused,
169 char *buf, size_t size)
170{
171 return __bpf_strerror(buf, size);
172}
173
174static inline int
175bpf__strerror_apply_obj_config(int err __maybe_unused,
176 char *buf, size_t size)
177{
178 return __bpf_strerror(buf, size);
179}
121#endif 180#endif
122#endif 181#endif