• Chuyi Zhou's avatar
    selftests/bpf: Add tests for open-coded task and css iter · 130e0f7a
    Chuyi Zhou authored
    This patch adds 4 subtests to demonstrate these patterns and validating
    correctness.
    
    subtest1:
    
    1) We use task_iter to iterate all process in the system and search for the
    current process with a given pid.
    
    2) We create some threads in current process context, and use
    BPF_TASK_ITER_PROC_THREADS to iterate all threads of current process. As
    expected, we would find all the threads of current process.
    
    3) We create some threads and use BPF_TASK_ITER_ALL_THREADS to iterate all
    threads in the system. As expected, we would find all the threads which was
    created.
    
    subtest2:
    
    We create a cgroup and add the current task to the cgroup. In the
    BPF program, we would use bpf_for_each(css_task, task, css) to iterate all
    tasks under the cgroup. As expected, we would find the current process.
    
    subtest3:
    
    1) We create a cgroup tree. In the BPF program, we use
    bpf_for_each(css, pos, root, XXX) to iterate all descendant under the root
    with pre and post order. As expected, we would find all descendant and the
    last iterating cgroup in post-order is root cgroup, the first iterating
    cgroup in pre-order is root cgroup.
    
    2) We wse BPF_CGROUP_ITER_ANCESTORS_UP to traverse the cgroup tree starting
    from leaf and root separately, and record the height. The diff of the
    hights would be the total tree-high - 1.
    
    subtest4:
    
    Add some failure testcase when using css_task, task and css iters, e.g,
    unlock when using task-iters to iterate tasks.
    Signed-off-by: default avatarChuyi Zhou <zhouchuyi@bytedance.com>
    Link: https://lore.kernel.org/r/20231018061746.111364-9-zhouchuyi@bytedance.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    130e0f7a
iters_task.c 1.01 KB