mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09: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:
committed by
Andrii Nakryiko
parent
f0d74c4da1
commit
21fb6f2aa3
@@ -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 = {
|
|||||||
.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 = {
|
|||||||
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 = {
|
|||||||
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 = {
|
|||||||
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 {
|
|||||||
__u64 cgroup_id;
|
__u64 cgroup_id;
|
||||||
__u32 order;
|
__u32 order;
|
||||||
} cgroup;
|
} cgroup;
|
||||||
|
struct {
|
||||||
|
__u32 tid;
|
||||||
|
__u32 pid;
|
||||||
|
} task;
|
||||||
};
|
};
|
||||||
} iter;
|
} iter;
|
||||||
struct {
|
struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user