1================= 2BPF Documentation 3================= 4 5This directory contains documentation for the BPF (Berkeley Packet 6Filter) facility, with a focus on the extended BPF version (eBPF). 7 8This kernel side documentation is still work in progress. The main 9textual documentation is (for historical reasons) described in 10:ref:`networking-filter`, which describe both classical and extended 11BPF instruction-set. 12The Cilium project also maintains a `BPF and XDP Reference Guide`_ 13that goes into great technical depth about the BPF Architecture. 14 15The primary info for the bpf syscall is available in the `man-pages`_ 16for `bpf(2)`_. 17 18BPF Type Format (BTF) 19===================== 20 21.. toctree:: 22 :maxdepth: 1 23 24 btf 25 26 27Frequently asked questions (FAQ) 28================================ 29 30Two sets of Questions and Answers (Q&A) are maintained. 31 32.. toctree:: 33 :maxdepth: 1 34 35 bpf_design_QA 36 bpf_devel_QA 37 38 39Helper functions 40================ 41 42* `bpf-helpers(7)`_ maintains a list of helpers available to eBPF programs. 43 44 45Program types 46============= 47 48.. toctree:: 49 :maxdepth: 1 50 51 prog_cgroup_sockopt 52 prog_cgroup_sysctl 53 prog_flow_dissector 54 bpf_lsm 55 prog_sk_lookup 56 57 58Map types 59========= 60 61.. toctree:: 62 :maxdepth: 1 63 64 map_cgroup_storage 65 66 67Testing and debugging BPF 68========================= 69 70.. toctree:: 71 :maxdepth: 1 72 73 drgn 74 s390 75 76 77Other 78===== 79 80.. toctree:: 81 :maxdepth: 1 82 83 ringbuf 84 85.. Links: 86.. _networking-filter: ../networking/filter.rst 87.. _man-pages: https://www.kernel.org/doc/man-pages/ 88.. _bpf(2): https://man7.org/linux/man-pages/man2/bpf.2.html 89.. _bpf-helpers(7): https://man7.org/linux/man-pages/man7/bpf-helpers.7.html 90.. _BPF and XDP Reference Guide: https://docs.cilium.io/en/latest/bpf/ 91