Commit 21fb6f2a authored by Kui-Feng Lee's avatar Kui-Feng Lee Committed by Andrii Nakryiko

bpf: Handle bpf_link_info for the parameterized task BPF iterators.

Add new fields to bpf_link_info that users can query it through
bpf_obj_get_info_by_fd().
Signed-off-by: default avatarKui-Feng Lee <kuifeng@fb.com>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Acked-by: default avatarYonghong Song <yhs@fb.com>
Acked-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
Link: https://lore.kernel.org/bpf/20220926184957.208194-3-kuifeng@fb.com
parent f0d74c4d
...@@ -6265,6 +6265,10 @@ struct bpf_link_info { ...@@ -6265,6 +6265,10 @@ struct bpf_link_info {
__u64 cgroup_id; __u64 cgroup_id;
__u32 order; __u32 order;
} cgroup; } cgroup;
struct {
__u32 tid;
__u32 pid;
} task;
}; };
} iter; } iter;
struct { struct {
......
...@@ -672,6 +672,21 @@ static const struct bpf_iter_seq_info task_seq_info = { ...@@ -672,6 +672,21 @@ static const struct bpf_iter_seq_info task_seq_info = {
.seq_priv_size = sizeof(struct bpf_iter_seq_task_info), .seq_priv_size = sizeof(struct bpf_iter_seq_task_info),
}; };
static int bpf_iter_fill_link_info(const struct bpf_iter_aux_info *aux, struct bpf_link_info *info)
{
switch (aux->task.type) {
case BPF_TASK_ITER_TID:
info->iter.task.tid = aux->task.pid;
break;
case BPF_TASK_ITER_TGID:
info->iter.task.pid = aux->task.pid;
break;
default:
break;
}
return 0;
}
static struct bpf_iter_reg task_reg_info = { static struct bpf_iter_reg task_reg_info = {
.target = "task", .target = "task",
.attach_target = bpf_iter_attach_task, .attach_target = bpf_iter_attach_task,
...@@ -682,6 +697,7 @@ static struct bpf_iter_reg task_reg_info = { ...@@ -682,6 +697,7 @@ static struct bpf_iter_reg task_reg_info = {
PTR_TO_BTF_ID_OR_NULL }, PTR_TO_BTF_ID_OR_NULL },
}, },
.seq_info = &task_seq_info, .seq_info = &task_seq_info,
.fill_link_info = bpf_iter_fill_link_info,
}; };
static const struct bpf_iter_seq_info task_file_seq_info = { static const struct bpf_iter_seq_info task_file_seq_info = {
...@@ -703,6 +719,7 @@ static struct bpf_iter_reg task_file_reg_info = { ...@@ -703,6 +719,7 @@ static struct bpf_iter_reg task_file_reg_info = {
PTR_TO_BTF_ID_OR_NULL }, PTR_TO_BTF_ID_OR_NULL },
}, },
.seq_info = &task_file_seq_info, .seq_info = &task_file_seq_info,
.fill_link_info = bpf_iter_fill_link_info,
}; };
static const struct bpf_iter_seq_info task_vma_seq_info = { static const struct bpf_iter_seq_info task_vma_seq_info = {
...@@ -724,6 +741,7 @@ static struct bpf_iter_reg task_vma_reg_info = { ...@@ -724,6 +741,7 @@ static struct bpf_iter_reg task_vma_reg_info = {
PTR_TO_BTF_ID_OR_NULL }, PTR_TO_BTF_ID_OR_NULL },
}, },
.seq_info = &task_vma_seq_info, .seq_info = &task_vma_seq_info,
.fill_link_info = bpf_iter_fill_link_info,
}; };
BPF_CALL_5(bpf_find_vma, struct task_struct *, task, u64, start, BPF_CALL_5(bpf_find_vma, struct task_struct *, task, u64, start,
......
...@@ -6265,6 +6265,10 @@ struct bpf_link_info { ...@@ -6265,6 +6265,10 @@ struct bpf_link_info {
__u64 cgroup_id; __u64 cgroup_id;
__u32 order; __u32 order;
} cgroup; } cgroup;
struct {
__u32 tid;
__u32 pid;
} task;
}; };
} iter; } iter;
struct { struct {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment