Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1522298
| From | Wang Nan <wangnan0@huawei.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 28/34] perf clang jit: Access BPF map |
| Date | 2016-11-15 05:10 +0100 |
| Message-ID | <sDDeh-8kE-9@gated-at.bofh.it> (permalink) |
| References | <sDDeh-8kE-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
---
tools/perf/util/bpf-loader.c | 37 +++++++++++++++++++++++++++++++++++++
tools/perf/util/bpf-loader.h | 19 +++++++++++++++++++
2 files changed, 56 insertions(+)
diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index 81c6fed..86aa99b 100644
--- a/tools/perf/util/bpf-loader.c
+++ b/tools/perf/util/bpf-loader.c
@@ -19,6 +19,7 @@
#include "parse-events.h"
#include "llvm-utils.h"
#include "c++/clang-c.h"
+#include "asm/bug.h" // for WARN_ONCE
#define DEFINE_PRINT_FN(name, level) \
static int libbpf_##name(const char *fmt, ...) \
@@ -1644,6 +1645,28 @@ int bpf__setup_stdout(struct perf_evlist *evlist __maybe_unused)
return 0;
}
+int bpf__map_fd(struct bpf_object *obj, void *jit_map)
+{
+ struct bpf_obj_priv *priv = bpf_object__priv(obj);
+ struct bpf_map *map;
+ size_t map_offset;
+ void *map_base;
+
+ if (IS_ERR(priv))
+ return PTR_ERR(priv);
+ if (!priv)
+ return -EINVAL;
+
+ map_base = priv->map_base;
+ map_offset = jit_map - map_base;
+ map = bpf_object__find_map_by_offset(obj, map_offset);
+ WARN_ONCE(IS_ERR(map), "can't find map offset %zu from '%s'\n",
+ map_offset, bpf_object__name(obj));
+ if (IS_ERR(map))
+ return -ENOENT;
+ return bpf_map__fd(map);
+}
+
#define ERRNO_OFFSET(e) ((e) - __BPF_LOADER_ERRNO__START)
#define ERRCODE_OFFSET(c) ERRNO_OFFSET(BPF_LOADER_ERRNO__##c)
#define NR_ERRNO (__BPF_LOADER_ERRNO__END - __BPF_LOADER_ERRNO__START)
@@ -1825,3 +1848,17 @@ int bpf__strerror_setup_stdout(struct perf_evlist *evlist __maybe_unused,
bpf__strerror_end(buf, size);
return 0;
}
+
+int bpf__strerror_map_fd(struct bpf_object *obj, void *jit_map,
+ int err, char *buf, size_t size)
+{
+ struct bpf_obj_priv *priv = bpf_object__priv(obj);
+ ptrdiff_t offset = priv ? jit_map - priv->map_base : jit_map - NULL;
+
+ bpf__strerror_head(err, buf, size);
+ bpf__strerror_entry(EINVAL, "No map in BPF object %s", bpf_object__name(obj));
+ bpf__strerror_entry(ENOENT, "Can't find map offset %lx in BPF object %s",
+ (unsigned long)offset, bpf_object__name(obj));
+ bpf__strerror_end(buf, size);
+ return 0;
+}
diff --git a/tools/perf/util/bpf-loader.h b/tools/perf/util/bpf-loader.h
index f2b737b..c40812b 100644
--- a/tools/perf/util/bpf-loader.h
+++ b/tools/perf/util/bpf-loader.h
@@ -84,6 +84,9 @@ int bpf__setup_stdout(struct perf_evlist *evlist);
int bpf__strerror_setup_stdout(struct perf_evlist *evlist, int err,
char *buf, size_t size);
+int bpf__map_fd(struct bpf_object *obj, void *jit_map);
+int bpf__strerror_map_fd(struct bpf_object *obj, void *jit_map,
+ int err, char *buf, size_t size);
#else
static inline struct bpf_object *
bpf__prepare_load(const char *filename __maybe_unused,
@@ -136,6 +139,13 @@ bpf__setup_stdout(struct perf_evlist *evlist __maybe_unused)
}
static inline int
+bpf__map_fd(struct bpf_object *obj __maybe_unused,
+ void *map_ptr __maybe_unused)
+{
+ return -ENOTSUP;
+}
+
+static inline int
__bpf_strerror(char *buf, size_t size)
{
if (!size)
@@ -196,5 +206,14 @@ bpf__strerror_setup_stdout(struct perf_evlist *evlist __maybe_unused,
{
return __bpf_strerror(buf, size);
}
+
+static inline int
+bpf__strerror_map_fd(struct bpf_object *obj __maybe_unused,
+ void *jit_map __maybe_unused,
+ int err __maybe_unused,
+ char *buf, size_t size);
+{
+ return __bpf_strerror(buf, size);
+}
#endif
#endif
--
2.10.1
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 00/34] perf clang: Builtin clang and perfhook support Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:10 +0100
[PATCH 21/34] perf clang: Pass CFLAGS to builtin clang Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:10 +0100
[PATCH 33/34] perf clang builtin: Define hook helpers by default Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:10 +0100
[PATCH 28/34] perf clang jit: Access BPF map Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:10 +0100
[PATCH 16/34] perf clang: Allow passing CFLAGS to builtin clang Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:10 +0100
[PATCH 23/34] perf clang jit: Insignt BPF and JIT functions in a Module Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:10 +0100
[PATCH 02/34] perf record: Fix segfault when running with suid and kptr_restrict is 1 Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:10 +0100
[PATCH 06/34] tools lib bpf: Add private field for bpf_object Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:10 +0100
[PATCH 03/34] tools perf: Add missing struct defeinition in probe_event.h Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 01/34] perf tools: Fix kernel version error in ubuntu Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 24/34] perf clang jit: add PerfModule::doJIT to JIT perfhook functions Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 30/34] perf clang: Link BPF functions declaration into perf Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 11/34] tools build: Add feature detection for LLVM Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 32/34] perf clang: Include helpers to BPF scripts Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 05/34] tools lib bpf: Add missing bpf map functions Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
Re: [PATCH 05/34] tools lib bpf: Add missing bpf map functions "Wangnan (F)" <wangnan0@huawei.com> - 2016-11-17 04:30 +0100
[PATCH 31/34] perf clang: Declare BPF functions for BPF scripts automatically Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 29/34] perf clang jit: Allow jitted perf hook access BPF maps Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 34/34] perf clang git: Export getpid() to perf hook Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 09/34] perf tools: Pass context to perf hook functions Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 22/34] perf clang jit: Wrap llvm::Module using PerfModule Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 25/34] perf clang jit: Export functions for jitted code Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 20/34] perf clang: Pass full path to builtin clang Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 18/34] perf clang: Support compile IR to BPF object and add testcase Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 15/34] perf clang: Use real file system for #include Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 27/34] perf clang jit: Collect the lowest address in maps section as map_base Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 17/34] perf clang: Update test case to use real BPF script Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 13/34] perf build: Add clang and llvm compile and linking support Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 12/34] tools build: Add feature detection for clang Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 08/34] perf tools: Introduce perf hooks Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 07/34] tools lib bpf: Retrive bpf_map through offset of bpf_map_def Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 26/34] perf clang jit: Actually JIT and hook in bpf loader Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 14/34] perf clang: Add builtin clang support ant test case Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 10/34] perf llvm: Extract helpers in llvm-utils.c Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
[PATCH 19/34] perf clang: Compile BPF script use builtin clang support Wang Nan <wangnan0@huawei.com> - 2016-11-15 05:20 +0100
Re: [PATCH 00/34] perf clang: Builtin clang and perfhook support "Wangnan (F)" <wangnan0@huawei.com> - 2016-11-15 05:40 +0100
csiph-web