Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1534355
| From | Arnaldo Carvalho de Melo <acme@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 06/19] tools lib bpf: Add private field for bpf_object |
| Date | 2016-12-01 19:10 +0100 |
| Message-ID | <sJDXY-7Z4-45@gated-at.bofh.it> (permalink) |
| References | <sJDXX-7Z4-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Wang Nan <wangnan0@huawei.com>
Similar to other classes defined in libbpf.h (map and program), allow
'object' class has its own private data.
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Cc: He Kuang <hekuang@huawei.com>
Cc: Joe Stringer <joe@ovn.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/20161126070354.141764-3-wangnan0@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/lib/bpf/libbpf.c | 23 +++++++++++++++++++++++
tools/lib/bpf/libbpf.h | 5 +++++
2 files changed, 28 insertions(+)
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 96a2b2ff1212..866d5cdeffc7 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -229,6 +229,10 @@ struct bpf_object {
* all objects.
*/
struct list_head list;
+
+ void *priv;
+ bpf_object_clear_priv_t clear_priv;
+
char path[];
};
#define obj_elf_valid(o) ((o)->efile.elf)
@@ -1229,6 +1233,9 @@ void bpf_object__close(struct bpf_object *obj)
if (!obj)
return;
+ if (obj->clear_priv)
+ obj->clear_priv(obj, obj->priv);
+
bpf_object__elf_finish(obj);
bpf_object__unload(obj);
@@ -1282,6 +1289,22 @@ unsigned int bpf_object__kversion(struct bpf_object *obj)
return obj ? obj->kern_version : 0;
}
+int bpf_object__set_priv(struct bpf_object *obj, void *priv,
+ bpf_object_clear_priv_t clear_priv)
+{
+ if (obj->priv && obj->clear_priv)
+ obj->clear_priv(obj, obj->priv);
+
+ obj->priv = priv;
+ obj->clear_priv = clear_priv;
+ return 0;
+}
+
+void *bpf_object__priv(struct bpf_object *obj)
+{
+ return obj ? obj->priv : ERR_PTR(-EINVAL);
+}
+
struct bpf_program *
bpf_program__next(struct bpf_program *prev, struct bpf_object *obj)
{
diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h
index dd7a513efb10..0c0b0127e03e 100644
--- a/tools/lib/bpf/libbpf.h
+++ b/tools/lib/bpf/libbpf.h
@@ -79,6 +79,11 @@ struct bpf_object *bpf_object__next(struct bpf_object *prev);
(pos) != NULL; \
(pos) = (tmp), (tmp) = bpf_object__next(tmp))
+typedef void (*bpf_object_clear_priv_t)(struct bpf_object *, void *);
+int bpf_object__set_priv(struct bpf_object *obj, void *priv,
+ bpf_object_clear_priv_t clear_priv);
+void *bpf_object__priv(struct bpf_object *prog);
+
/* Accessors of bpf_program. */
struct bpf_program;
struct bpf_program *bpf_program__next(struct bpf_program *prog,
--
2.9.3
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 12/19] perf tools: Add time-based utility functions Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 18/19] perf annotate: Use arch->objdump.comment_char in dec__parse() Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 02/19] perf annotate: Show invalid jump offset in error message Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 16/19] perf kmem: Add option to specify time window of interest Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 08/19] perf tools: Introduce perf hooks Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 06/19] tools lib bpf: Add private field for bpf_object Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 14/19] perf script: Add option to specify time window of interest Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 19/19] perf annotate: AArch64 support Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 10/19] perf kmem stat: Track memory freed Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 03/19] perf sched timehist: Handle cpu migration events Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 09/19] perf test: Remove "test" and similar strings from test descriptions Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 13/19] perf tools: Move parse_nsec_time to time-utils.c Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 04/19] perf trace: Update tid/pid filtering option to leverage symbol_conf Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 [PATCH 01/19] perf ui helpline: Provide a printf variant Arnaldo Carvalho de Melo <acme@kernel.org> - 2016-12-01 19:10 +0100 Re: [GIT PULL 00/19] perf/core improvements and fixes Ingo Molnar <mingo@kernel.org> - 2016-12-02 10:20 +0100
csiph-web