]> git.baikalelectronics.ru Git - kernel.git/commitdiff
tools/libpf: Add offsetof/container_of macro in bpf_helpers.h
authorYonghong Song <yhs@fb.com>
Sat, 9 May 2020 17:59:19 +0000 (10:59 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Sun, 10 May 2020 00:05:27 +0000 (17:05 -0700)
These two helpers will be used later in bpf_iter bpf program
bpf_iter_netlink.c. Put them in bpf_helpers.h since they could
be useful in other cases.

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200509175919.2477104-1-yhs@fb.com
tools/lib/bpf/bpf_helpers.h

index da00b87aa1996d8f6f0be5ed46a088ba313fbd2a..f67dce2af80224a98141917c74581b0298400197 100644 (file)
 #define __weak __attribute__((weak))
 #endif
 
+/*
+ * Helper macro to manipulate data structures
+ */
+#ifndef offsetof
+#define offsetof(TYPE, MEMBER)  ((size_t)&((TYPE *)0)->MEMBER)
+#endif
+#ifndef container_of
+#define container_of(ptr, type, member)                                \
+       ({                                                      \
+               void *__mptr = (void *)(ptr);                   \
+               ((type *)(__mptr - offsetof(type, member)));    \
+       })
+#endif
+
 /*
  * Helper structure used by eBPF C program
  * to describe BPF map attributes to libbpf loader