122 lines
3.8 KiB
Diff
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
|
|
|