• Alexei Starovoitov's avatar
    bpf: Add kernel module with user mode driver that populates bpffs. · d71fa5c9
    Alexei Starovoitov authored
    Add kernel module with user mode driver that populates bpffs with
    BPF iterators.
    
    $ mount bpffs /my/bpffs/ -t bpf
    $ ls -la /my/bpffs/
    total 4
    drwxrwxrwt  2 root root    0 Jul  2 00:27 .
    drwxr-xr-x 19 root root 4096 Jul  2 00:09 ..
    -rw-------  1 root root    0 Jul  2 00:27 maps.debug
    -rw-------  1 root root    0 Jul  2 00:27 progs.debug
    
    The user mode driver will load BPF Type Formats, create BPF maps, populate BPF
    maps, load two BPF programs, attach them to BPF iterators, and finally send two
    bpf_link IDs back to the kernel.
    The kernel will pin two bpf_links into newly mounted bpffs instance under
    names "progs.debug" and "maps.debug". These two files become human readable.
    
    $ cat /my/bpffs/progs.debug
      id name            attached
      11 dump_bpf_map    bpf_iter_bpf_map
      12 dump_bpf_prog   bpf_iter_bpf_prog
      27 test_pkt_access
      32 test_main       test_pkt_access test_pkt_access
      33 test_subprog1   test_pkt_access_subprog1 test_pkt_access
      34 test_subprog2   test_pkt_access_subprog2 test_pkt_access
      35 test_subprog3   test_pkt_access_subprog3 test_pkt_access
      36 new_get_skb_len get_skb_len test_pkt_access
      37 new_get_skb_ifindex get_skb_ifindex test_pkt_access
      38 new_get_constant get_constant test_pkt_access
    
    The BPF program dump_bpf_prog() in iterators.bpf.c is printing this data about
    all BPF programs currently loaded in the system. This information is unstable
    and will change from kernel to kernel as ".debug" suffix conveys.
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20200819042759.51280-4-alexei.starovoitov@gmail.com
    d71fa5c9
iterators.c 2.32 KB