]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - tools/perf/util/bpf-loader.h
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux
[linux.git] / tools / perf / util / bpf-loader.h
index ccd8d7fd79d3443bde634534580883a19adde53e..9caf3ae4acf3d018a87d92bb62f16c4337bd6388 100644 (file)
@@ -8,9 +8,21 @@
 #include <linux/compiler.h>
 #include <linux/err.h>
 #include <string.h>
+#include <bpf/libbpf.h>
 #include "probe-event.h"
 #include "debug.h"
 
+enum bpf_loader_errno {
+       __BPF_LOADER_ERRNO__START = __LIBBPF_ERRNO__START - 100,
+       /* Invalid config string */
+       BPF_LOADER_ERRNO__CONFIG = __BPF_LOADER_ERRNO__START,
+       BPF_LOADER_ERRNO__GROUP,        /* Invalid group name */
+       BPF_LOADER_ERRNO__EVENTNAME,    /* Event name is missing */
+       BPF_LOADER_ERRNO__INTERNAL,     /* BPF loader internal error */
+       BPF_LOADER_ERRNO__COMPILE,      /* Error when compiling BPF scriptlet */
+       __BPF_LOADER_ERRNO__END,
+};
+
 struct bpf_object;
 #define PERF_BPF_PROBE_GROUP "perf_bpf_probe"
 
@@ -19,6 +31,11 @@ typedef int (*bpf_prog_iter_callback_t)(struct probe_trace_event *tev,
 
 #ifdef HAVE_LIBBPF_SUPPORT
 struct bpf_object *bpf__prepare_load(const char *filename, bool source);
+int bpf__strerror_prepare_load(const char *filename, bool source,
+                              int err, char *buf, size_t size);
+
+struct bpf_object *bpf__prepare_load_buffer(void *obj_buf, size_t obj_buf_sz,
+                                           const char *name);
 
 void bpf__clear(void);
 
@@ -41,6 +58,13 @@ bpf__prepare_load(const char *filename __maybe_unused,
        return ERR_PTR(-ENOTSUP);
 }
 
+static inline struct bpf_object *
+bpf__prepare_load_buffer(void *obj_buf __maybe_unused,
+                                          size_t obj_buf_sz __maybe_unused)
+{
+       return ERR_PTR(-ENOTSUP);
+}
+
 static inline void bpf__clear(void) { }
 
 static inline int bpf__probe(struct bpf_object *obj __maybe_unused) { return 0;}
@@ -67,6 +91,15 @@ __bpf_strerror(char *buf, size_t size)
        return 0;
 }
 
+static inline
+int bpf__strerror_prepare_load(const char *filename __maybe_unused,
+                              bool source __maybe_unused,
+                              int err __maybe_unused,
+                              char *buf, size_t size)
+{
+       return __bpf_strerror(buf, size);
+}
+
 static inline int
 bpf__strerror_probe(struct bpf_object *obj __maybe_unused,
                    int err __maybe_unused,