• Yonghong Song's avatar
    tools/bpf: selftests: Add iter progs for bpf_map/task/task_file · acf61631
    Yonghong Song authored
    The implementation is arbitrary, just to show how the bpf programs
    can be written for bpf_map/task/task_file. They can be costomized
    for specific needs.
    
    For example, for bpf_map, the iterator prints out:
      $ cat /sys/fs/bpf/my_bpf_map
          id   refcnt  usercnt  locked_vm
           3        2        0         20
           6        2        0         20
           9        2        0         20
          12        2        0         20
          13        2        0         20
          16        2        0         20
          19        2        0         20
          %%% END %%%
    
    For task, the iterator prints out:
      $ cat /sys/fs/bpf/my_task
        tgid      gid
           1        1
           2        2
        ....
        1944     1944
        1948     1948
        1949     1949
        1953     1953
        === END ===
    
    For task/file, the iterator prints out:
      $ cat /sys/fs/bpf/my_task_file
        tgid      gid       fd      file
           1        1        0 ffffffff95c97600
           1        1        1 ffffffff95c97600
           1        1        2 ffffffff95c97600
        ....
        1895     1895      255 ffffffff95c8fe00
        1932     1932        0 ffffffff95c8fe00
        1932     1932        1 ffffffff95c8fe00
        1932     1932        2 ffffffff95c8fe00
        1932     1932        3 ffffffff95c185c0
    
    This is able to print out all open files (fd and file->f_op), so user can compare
    f_op against a particular kernel file operations to find what it is.
    For example, from /proc/kallsyms, we can find
      ffffffff95c185c0 r eventfd_fops
    so we will know tgid 1932 fd 3 is an eventfd file descriptor.
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Acked-by: default avatarAndrii Nakryiko <andriin@fb.com>
    Link: https://lore.kernel.org/bpf/20200509175922.2477576-1-yhs@fb.com
    acf61631
bpf_iter_bpf_map.c 718 Bytes