aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/bpf-loader.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/bpf-loader.c')
-rw-r--r--tools/perf/util/bpf-loader.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index 56f6fe8cf318..727955858d00 100644
--- a/tools/perf/util/bpf-loader.c
+++ b/tools/perf/util/bpf-loader.c
@@ -243,6 +243,18 @@ int bpf__unprobe(struct bpf_object *obj)
243 return ret; 243 return ret;
244} 244}
245 245
246int bpf__load(struct bpf_object *obj)
247{
248 int err;
249
250 err = bpf_object__load(obj);
251 if (err) {
252 pr_debug("bpf: load objects failed\n");
253 return err;
254 }
255 return 0;
256}
257
246#define bpf__strerror_head(err, buf, size) \ 258#define bpf__strerror_head(err, buf, size) \
247 char sbuf[STRERR_BUFSIZE], *emsg;\ 259 char sbuf[STRERR_BUFSIZE], *emsg;\
248 if (!size)\ 260 if (!size)\
@@ -275,3 +287,13 @@ int bpf__strerror_probe(struct bpf_object *obj __maybe_unused,
275 bpf__strerror_end(buf, size); 287 bpf__strerror_end(buf, size);
276 return 0; 288 return 0;
277} 289}
290
291int bpf__strerror_load(struct bpf_object *obj __maybe_unused,
292 int err, char *buf, size_t size)
293{
294 bpf__strerror_head(err, buf, size);
295 bpf__strerror_entry(EINVAL, "%s: Are you root and runing a CONFIG_BPF_SYSCALL kernel?",
296 emsg)
297 bpf__strerror_end(buf, size);
298 return 0;
299}