bpftool: Show parameters of BPF task iterators.
Show tid or pid of iterators if giving an argument of tid or pid For example, the command `bpftool link list` may list following lines. 1: iter prog 2 target_name bpf_map 2: iter prog 3 target_name bpf_prog 33: iter prog 225 target_name task_file tid 1644 pids test_progs(1644) Link 33 is a task_file iterator with tid 1644. For now, only targets of task, task_file and task_vma may be with tid or pid to filter out tasks other than those belonging to a process (pid) or a thread (tid). Signed-off-by: Kui-Feng Lee <kuifeng@fb.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: Quentin Monnet <quentin@isovalent.com> Acked-by: Yonghong Song <yhs@fb.com> Acked-by: Martin KaFai Lau <martin.lau@kernel.org> Link: https://lore.kernel.org/bpf/20220926184957.208194-6-kuifeng@fb.com
This commit is contained in:
parent
b3e1331eb9
commit
6bdb6d6be0
|
@ -106,6 +106,13 @@ static const char *cgroup_order_string(__u32 order)
|
|||
}
|
||||
}
|
||||
|
||||
static bool is_iter_task_target(const char *target_name)
|
||||
{
|
||||
return strcmp(target_name, "task") == 0 ||
|
||||
strcmp(target_name, "task_file") == 0 ||
|
||||
strcmp(target_name, "task_vma") == 0;
|
||||
}
|
||||
|
||||
static void show_iter_json(struct bpf_link_info *info, json_writer_t *wtr)
|
||||
{
|
||||
const char *target_name = u64_to_ptr(info->iter.target_name);
|
||||
|
@ -114,6 +121,12 @@ static void show_iter_json(struct bpf_link_info *info, json_writer_t *wtr)
|
|||
|
||||
if (is_iter_map_target(target_name))
|
||||
jsonw_uint_field(wtr, "map_id", info->iter.map.map_id);
|
||||
else if (is_iter_task_target(target_name)) {
|
||||
if (info->iter.task.tid)
|
||||
jsonw_uint_field(wtr, "tid", info->iter.task.tid);
|
||||
else if (info->iter.task.pid)
|
||||
jsonw_uint_field(wtr, "pid", info->iter.task.pid);
|
||||
}
|
||||
|
||||
if (is_iter_cgroup_target(target_name)) {
|
||||
jsonw_lluint_field(wtr, "cgroup_id", info->iter.cgroup.cgroup_id);
|
||||
|
@ -237,6 +250,12 @@ static void show_iter_plain(struct bpf_link_info *info)
|
|||
|
||||
if (is_iter_map_target(target_name))
|
||||
printf("map_id %u ", info->iter.map.map_id);
|
||||
else if (is_iter_task_target(target_name)) {
|
||||
if (info->iter.task.tid)
|
||||
printf("tid %u ", info->iter.task.tid);
|
||||
else if (info->iter.task.pid)
|
||||
printf("pid %u ", info->iter.task.pid);
|
||||
}
|
||||
|
||||
if (is_iter_cgroup_target(target_name)) {
|
||||
printf("cgroup_id %llu ", info->iter.cgroup.cgroup_id);
|
||||
|
|
Loading…
Reference in New Issue