提交 2e51838a 编写于 作者: C Chen Hui 提交者: Zheng Zengkai

samples/bpf: Update bpf loader for sched section names

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5KUFB
CVE: NA

--------------------------------

Add support for section names starting with sched/.
Signed-off-by: NChen Hui <judy.chenhui@huawei.com>
Signed-off-by: NHui Tang <tanghui20@huawei.com>
上级 e4a9bbfa
...@@ -87,6 +87,7 @@ static int load_and_attach(const char *event, struct bpf_insn *prog, int size) ...@@ -87,6 +87,7 @@ static int load_and_attach(const char *event, struct bpf_insn *prog, int size)
bool is_sockops = strncmp(event, "sockops", 7) == 0; bool is_sockops = strncmp(event, "sockops", 7) == 0;
bool is_sk_skb = strncmp(event, "sk_skb", 6) == 0; bool is_sk_skb = strncmp(event, "sk_skb", 6) == 0;
bool is_sk_msg = strncmp(event, "sk_msg", 6) == 0; bool is_sk_msg = strncmp(event, "sk_msg", 6) == 0;
bool is_sched = strncmp(event, "sched/", 6) == 0;
size_t insns_cnt = size / sizeof(struct bpf_insn); size_t insns_cnt = size / sizeof(struct bpf_insn);
enum bpf_prog_type prog_type; enum bpf_prog_type prog_type;
char buf[256]; char buf[256];
...@@ -120,6 +121,8 @@ static int load_and_attach(const char *event, struct bpf_insn *prog, int size) ...@@ -120,6 +121,8 @@ static int load_and_attach(const char *event, struct bpf_insn *prog, int size)
prog_type = BPF_PROG_TYPE_SK_SKB; prog_type = BPF_PROG_TYPE_SK_SKB;
} else if (is_sk_msg) { } else if (is_sk_msg) {
prog_type = BPF_PROG_TYPE_SK_MSG; prog_type = BPF_PROG_TYPE_SK_MSG;
} else if (is_sched) {
prog_type = BPF_PROG_TYPE_SCHED;
} else { } else {
printf("Unknown event '%s'\n", event); printf("Unknown event '%s'\n", event);
return -1; return -1;
...@@ -137,7 +140,7 @@ static int load_and_attach(const char *event, struct bpf_insn *prog, int size) ...@@ -137,7 +140,7 @@ static int load_and_attach(const char *event, struct bpf_insn *prog, int size)
prog_fd[prog_cnt++] = fd; prog_fd[prog_cnt++] = fd;
if (is_xdp || is_perf_event || is_cgroup_skb || is_cgroup_sk) if (is_xdp || is_perf_event || is_cgroup_skb || is_cgroup_sk || is_sched)
return 0; return 0;
if (is_socket || is_sockops || is_sk_skb || is_sk_msg) { if (is_socket || is_sockops || is_sk_skb || is_sk_msg) {
...@@ -643,7 +646,8 @@ static int do_load_bpf_file(const char *path, fixup_map_cb fixup_map) ...@@ -643,7 +646,8 @@ static int do_load_bpf_file(const char *path, fixup_map_cb fixup_map)
memcmp(shname, "cgroup/", 7) == 0 || memcmp(shname, "cgroup/", 7) == 0 ||
memcmp(shname, "sockops", 7) == 0 || memcmp(shname, "sockops", 7) == 0 ||
memcmp(shname, "sk_skb", 6) == 0 || memcmp(shname, "sk_skb", 6) == 0 ||
memcmp(shname, "sk_msg", 6) == 0) { memcmp(shname, "sk_msg", 6) == 0 ||
memcmp(shname, "sched/", 6) == 0) {
ret = load_and_attach(shname, data->d_buf, ret = load_and_attach(shname, data->d_buf,
data->d_size); data->d_size);
if (ret != 0) if (ret != 0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册