mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
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: Kui-Feng Lee <kuifeng@fb.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: Yonghong Song <yhs@fb.com> Acked-by: Martin KaFai Lau <martin.lau@kernel.org> Link: https://lore.kernel.org/bpf/20220926184957.208194-3-kuifeng@fb.com
This commit is contained in:
parent
f0d74c4da1
commit
21fb6f2aa3
@ -6265,6 +6265,10 @@ struct bpf_link_info {
|
||||
__u64 cgroup_id;
|
||||
__u32 order;
|
||||
} cgroup;
|
||||
struct {
|
||||
__u32 tid;
|
||||
__u32 pid;
|
||||
} task;
|
||||
};
|
||||
} iter;
|
||||
struct {
|
||||
|
@ -672,6 +672,21 @@ static const struct bpf_iter_seq_info task_seq_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 = {
|
||||
.target = "task",
|
||||
.attach_target = bpf_iter_attach_task,
|
||||
@ -682,6 +697,7 @@ static struct bpf_iter_reg task_reg_info = {
|
||||
PTR_TO_BTF_ID_OR_NULL },
|
||||
},
|
||||
.seq_info = &task_seq_info,
|
||||
.fill_link_info = bpf_iter_fill_link_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 = {
|
||||
PTR_TO_BTF_ID_OR_NULL },
|
||||
},
|
||||
.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 = {
|
||||
@ -724,6 +741,7 @@ static struct bpf_iter_reg task_vma_reg_info = {
|
||||
PTR_TO_BTF_ID_OR_NULL },
|
||||
},
|
||||
.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,
|
||||
|
@ -6265,6 +6265,10 @@ struct bpf_link_info {
|
||||
__u64 cgroup_id;
|
||||
__u32 order;
|
||||
} cgroup;
|
||||
struct {
|
||||
__u32 tid;
|
||||
__u32 pid;
|
||||
} task;
|
||||
};
|
||||
} iter;
|
||||
struct {
|
||||
|
Loading…
Reference in New Issue
Block a user