diff options
Diffstat (limited to 'tools/perf/util/bpf-loader.c')
-rw-r--r-- | tools/perf/util/bpf-loader.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c index e3afa1b60bb5..4c50411371db 100644 --- a/tools/perf/util/bpf-loader.c +++ b/tools/perf/util/bpf-loader.c | |||
@@ -34,10 +34,32 @@ struct bpf_prog_priv { | |||
34 | struct perf_probe_event pev; | 34 | struct perf_probe_event pev; |
35 | }; | 35 | }; |
36 | 36 | ||
37 | static bool libbpf_initialized; | ||
38 | |||
39 | struct bpf_object * | ||
40 | bpf__prepare_load_buffer(void *obj_buf, size_t obj_buf_sz, const char *name) | ||
41 | { | ||
42 | struct bpf_object *obj; | ||
43 | |||
44 | if (!libbpf_initialized) { | ||
45 | libbpf_set_print(libbpf_warning, | ||
46 | libbpf_info, | ||
47 | libbpf_debug); | ||
48 | libbpf_initialized = true; | ||
49 | } | ||
50 | |||
51 | obj = bpf_object__open_buffer(obj_buf, obj_buf_sz, name); | ||
52 | if (IS_ERR(obj)) { | ||
53 | pr_debug("bpf: failed to load buffer\n"); | ||
54 | return ERR_PTR(-EINVAL); | ||
55 | } | ||
56 | |||
57 | return obj; | ||
58 | } | ||
59 | |||
37 | struct bpf_object *bpf__prepare_load(const char *filename, bool source) | 60 | struct bpf_object *bpf__prepare_load(const char *filename, bool source) |
38 | { | 61 | { |
39 | struct bpf_object *obj; | 62 | struct bpf_object *obj; |
40 | static bool libbpf_initialized; | ||
41 | 63 | ||
42 | if (!libbpf_initialized) { | 64 | if (!libbpf_initialized) { |
43 | libbpf_set_print(libbpf_warning, | 65 | libbpf_set_print(libbpf_warning, |