bpftool/bpftool-recognize-scheduler-programs.patch
bitcoffee 4f4996a6e6 bpftool: init package
init package

Signed-off-by: bitcoffee <liuxin350@huawei.com>
2023-11-24 12:07:47 +08:00

122 lines
3.8 KiB
Diff

From 3882d69d1fdf997c0deab696af7be752e87877d5 Mon Sep 17 00:00:00 2001
From: bitcoffee <liuxin350@huawei.com>
Date: Thu, 12 Oct 2023 19:50:14 +0800
Subject: [PATCH] bpftool: recognize scheduler programs
Teach bpftool to recognize scheduler bpf programs.
Signed-off-by: Roman Gushchin <guro@fb.com>
Signed-off-by: Chen Hui <judy.chenhui@huawei.com>
Signed-off-by: Ren Zhijie <renzhijie2@huawei.com>
Signed-off-by: Hui Tang <tanghui20@huawei.com>
---
include/uapi/linux/bpf.h | 6 ++++++
libbpf/include/uapi/linux/bpf.h | 6 ++++++
libbpf/src/bpf.c | 1 +
libbpf/src/libbpf.c | 3 ++-
src/common.c | 1 +
src/prog.c | 1 +
6 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 0210f85..f4e5102 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -952,6 +952,9 @@ enum bpf_prog_type {
BPF_PROG_TYPE_LSM,
BPF_PROG_TYPE_SK_LOOKUP,
BPF_PROG_TYPE_SYSCALL, /* a program that can execute syscalls */
+#ifndef __GENKSYMS__
+ BPF_PROG_TYPE_SCHED,
+#endif
};
enum bpf_attach_type {
@@ -998,6 +1001,9 @@ enum bpf_attach_type {
BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
BPF_PERF_EVENT,
BPF_TRACE_KPROBE_MULTI,
+#ifndef __GENKSYMS__
+ BPF_SCHED,
+#endif
__MAX_BPF_ATTACH_TYPE
};
diff --git a/libbpf/include/uapi/linux/bpf.h b/libbpf/include/uapi/linux/bpf.h
index 0210f85..f4e5102 100644
--- a/libbpf/include/uapi/linux/bpf.h
+++ b/libbpf/include/uapi/linux/bpf.h
@@ -952,6 +952,9 @@ enum bpf_prog_type {
BPF_PROG_TYPE_LSM,
BPF_PROG_TYPE_SK_LOOKUP,
BPF_PROG_TYPE_SYSCALL, /* a program that can execute syscalls */
+#ifndef __GENKSYMS__
+ BPF_PROG_TYPE_SCHED,
+#endif
};
enum bpf_attach_type {
@@ -998,6 +1001,9 @@ enum bpf_attach_type {
BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
BPF_PERF_EVENT,
BPF_TRACE_KPROBE_MULTI,
+#ifndef __GENKSYMS__
+ BPF_SCHED,
+#endif
__MAX_BPF_ATTACH_TYPE
};
diff --git a/libbpf/src/bpf.c b/libbpf/src/bpf.c
index 4677644..a223340 100644
--- a/libbpf/src/bpf.c
+++ b/libbpf/src/bpf.c
@@ -484,6 +484,7 @@ static int bpf_load_program_xattr2(const struct bpf_load_program_attr *load_attr
break;
case BPF_PROG_TYPE_TRACING:
case BPF_PROG_TYPE_EXT:
+ case BPF_PROG_TYPE_SCHED:
p.attach_btf_id = load_attr->attach_btf_id;
p.attach_prog_fd = load_attr->attach_prog_fd;
break;
diff --git a/libbpf/src/libbpf.c b/libbpf/src/libbpf.c
index 1a5ab2f..72a5c45 100644
--- a/libbpf/src/libbpf.c
+++ b/libbpf/src/libbpf.c
@@ -7333,7 +7333,8 @@ static int bpf_object_init_progs(struct bpf_object *obj, const struct bpf_object
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
if (prog->sec_def->prog_type == BPF_PROG_TYPE_TRACING ||
- prog->sec_def->prog_type == BPF_PROG_TYPE_EXT)
+ prog->sec_def->prog_type == BPF_PROG_TYPE_EXT ||
+ prog->type == BPF_PROG_TYPE_SCHED)
prog->attach_prog_fd = OPTS_GET(opts, attach_prog_fd, 0);
#pragma GCC diagnostic pop
diff --git a/src/common.c b/src/common.c
index c740142..c2cff8e 100644
--- a/src/common.c
+++ b/src/common.c
@@ -75,6 +75,7 @@ const char * const attach_type_name[__MAX_BPF_ATTACH_TYPE] = {
[BPF_SK_REUSEPORT_SELECT_OR_MIGRATE] = "sk_skb_reuseport_select_or_migrate",
[BPF_PERF_EVENT] = "perf_event",
[BPF_TRACE_KPROBE_MULTI] = "trace_kprobe_multi",
+ [BPF_SCHED] = "sched",
};
void p_err(const char *fmt, ...)
diff --git a/src/prog.c b/src/prog.c
index 5c2c63d..3e385d6 100644
--- a/src/prog.c
+++ b/src/prog.c
@@ -69,6 +69,7 @@ const char * const prog_type_name[] = {
[BPF_PROG_TYPE_LSM] = "lsm",
[BPF_PROG_TYPE_SK_LOOKUP] = "sk_lookup",
[BPF_PROG_TYPE_SYSCALL] = "syscall",
+ [BPF_PROG_TYPE_SCHED] = "sched",
};
const size_t prog_type_name_size = ARRAY_SIZE(prog_type_name);
--
2.33.0