diff options
Diffstat (limited to 'tools/perf/util/bpf-loader.c')
-rw-r--r-- | tools/perf/util/bpf-loader.c | 22 |
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 | ||
246 | int 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 | |||
291 | int 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 | } | ||