[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <29644dc7906c7c0e6843d8acf92c3e29089845d0.1704324602.git.dxu@dxuuu.xyz>
Date: Wed, 3 Jan 2024 16:31:55 -0700
From: Daniel Xu <dxu@...uu.xyz>
To: martin.lau@...ux.dev,
andrii@...nel.org,
daniel@...earbox.net,
ast@...nel.org,
alexei.starovoitov@...il.com,
olsajiri@...il.com,
quentin@...valent.com,
alan.maguire@...cle.com,
memxor@...il.com
Cc: song@...nel.org,
yonghong.song@...ux.dev,
john.fastabend@...il.com,
kpsingh@...nel.org,
sdf@...gle.com,
haoluo@...gle.com,
jolsa@...nel.org,
bpf@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH bpf-next 1/2] bpf: btf: Support optional flags for BTF_SET8 sets
This commit adds support for optional flags on BTF_SET8s.
struct btf_id_set8 already supported 32 bits worth of flags, but was
only used for alignment purposes before.
We now use these bits to encode flags. The next commit will tag all
kfunc sets with a flag so that pahole can recognize which
BTF_ID_FLAGS(func, ..) are actual kfuncs.
Signed-off-by: Daniel Xu <dxu@...uu.xyz>
---
include/linux/btf_ids.h | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h
index a9cb10b0e2e9..88f914579fa1 100644
--- a/include/linux/btf_ids.h
+++ b/include/linux/btf_ids.h
@@ -183,17 +183,21 @@ extern struct btf_id_set name;
* .word (1 << 3) | (1 << 1) | (1 << 2)
*
*/
-#define __BTF_SET8_START(name, scope) \
+#define ___BTF_SET8_START(name, scope, flags) \
asm( \
".pushsection " BTF_IDS_SECTION ",\"a\"; \n" \
"." #scope " __BTF_ID__set8__" #name "; \n" \
"__BTF_ID__set8__" #name ":; \n" \
-".zero 8 \n" \
+".zero 4 \n" \
+".long " #flags "\n" \
".popsection; \n");
-#define BTF_SET8_START(name) \
+#define __BTF_SET8_START(name, scope, flags, ...) \
+___BTF_SET8_START(name, scope, flags)
+
+#define BTF_SET8_START(name, ...) \
__BTF_ID_LIST(name, local) \
-__BTF_SET8_START(name, local)
+__BTF_SET8_START(name, local, ##__VA_ARGS__, 0)
#define BTF_SET8_END(name) \
asm( \
@@ -214,7 +218,7 @@ extern struct btf_id_set8 name;
#define BTF_SET_START(name) static struct btf_id_set __maybe_unused name = { 0 };
#define BTF_SET_START_GLOBAL(name) static struct btf_id_set __maybe_unused name = { 0 };
#define BTF_SET_END(name)
-#define BTF_SET8_START(name) static struct btf_id_set8 __maybe_unused name = { 0 };
+#define BTF_SET8_START(name, ...) static struct btf_id_set8 __maybe_unused name = { 0 };
#define BTF_SET8_END(name)
#endif /* CONFIG_DEBUG_INFO_BTF */
--
2.42.1
Powered by blists - more mailing lists