Copy disabled (too large)
Download .txt
Showing preview only (16,014K chars total). Download the full file to get everything.
Repository: iovisor/bcc
Branch: master
Commit: 2cc6d1ade647
Files: 1069
Total size: 25.7 MB
Directory structure:
gitextract_u8ikdlvh/
├── .clang-format
├── .dockerignore
├── .github/
│ ├── actions/
│ │ └── build-container/
│ │ └── action.yml
│ ├── scripts/
│ │ └── check_links.py
│ └── workflows/
│ ├── bcc-test.yml
│ ├── check_links.yml
│ ├── publish-build-containers.yml
│ └── publish.yml
├── .gitignore
├── .gitmodules
├── .travis.yml
├── CMakeLists.txt
├── CODEOWNERS
├── CONTRIBUTING-SCRIPTS.md
├── FAQ.txt
├── INSTALL.md
├── LICENSE.txt
├── LINKS.md
├── QUICKSTART.md
├── README.md
├── SPECS/
│ ├── Dockerfile.fedora
│ ├── bcc+clang.spec
│ └── bcc.spec
├── cmake/
│ ├── CmakeUninstall.cmake.in
│ ├── FindCompilerFlag.cmake
│ ├── FindKernelHeaders.cmake
│ ├── FindLibBpf.cmake
│ ├── FindLibDebuginfod.cmake
│ ├── FindLibElf.cmake
│ ├── FindLibLzma.cmake
│ ├── FindLuaJIT.cmake
│ ├── GetGitRevisionDescription.cmake
│ ├── GetGitRevisionDescription.cmake.in
│ ├── bump_version.cmake
│ ├── clang_libs.cmake
│ ├── static_libstdc++.cmake
│ └── version.cmake
├── debian/
│ ├── bcc-lua.install
│ ├── bcc-tools.install
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── docs
│ ├── libbcc-examples.install
│ ├── libbcc.install
│ ├── python-bcc.install
│ ├── rules
│ └── source/
│ └── format
├── docker/
│ ├── Dockerfile.debian
│ ├── Dockerfile.ubuntu
│ └── build/
│ ├── Dockerfile.fedora
│ └── Dockerfile.ubuntu
├── docs/
│ ├── kernel-versions.md
│ ├── kernel_config.md
│ ├── reference_guide.md
│ ├── special_filtering.md
│ ├── tutorial.md
│ └── tutorial_bcc_python_developer.md
├── examples/
│ ├── CMakeLists.txt
│ ├── cgroupid/
│ │ ├── Dockerfile
│ │ ├── Makefile
│ │ └── cgroupid.c
│ ├── cpp/
│ │ ├── CGroupTest.cc
│ │ ├── CMakeLists.txt
│ │ ├── CPUDistribution.cc
│ │ ├── FollyRequestContextSwitch.cc
│ │ ├── HelloWorld.cc
│ │ ├── KFuncExample.cc
│ │ ├── KModRetExample.cc
│ │ ├── LLCStat.cc
│ │ ├── RandomRead.cc
│ │ ├── RecordMySQLQuery.cc
│ │ ├── SkLocalStorageIterator.cc
│ │ ├── TCPSendStack.cc
│ │ ├── TaskIterator.cc
│ │ ├── UseExternalMap.cc
│ │ └── pyperf/
│ │ ├── CMakeLists.txt
│ │ ├── Py36Offsets.cc
│ │ ├── PyPerf.cc
│ │ ├── PyPerfBPFProgram.cc
│ │ ├── PyPerfDefaultPrinter.cc
│ │ ├── PyPerfDefaultPrinter.h
│ │ ├── PyPerfLoggingHelper.cc
│ │ ├── PyPerfLoggingHelper.h
│ │ ├── PyPerfSampleProcessor.h
│ │ ├── PyPerfType.h
│ │ ├── PyPerfUtil.cc
│ │ └── PyPerfUtil.h
│ ├── hello_world.py
│ ├── local_storage/
│ │ ├── inode_storage.py
│ │ └── task_storage.py
│ ├── lua/
│ │ ├── CMakeLists.txt
│ │ ├── bashreadline.c
│ │ ├── bashreadline.lua
│ │ ├── kprobe-latency.lua
│ │ ├── kprobe-write.lua
│ │ ├── memleak.lua
│ │ ├── offcputime.lua
│ │ ├── sock-parse-dns.lua
│ │ ├── sock-parse-http.lua
│ │ ├── sock-proto.lua
│ │ ├── sock-protolen.lua
│ │ ├── strlen_count.lua
│ │ ├── task_switch.lua
│ │ ├── tracepoint-offcputime.lua
│ │ ├── uprobe-readline-perf.lua
│ │ ├── uprobe-readline.lua
│ │ ├── uprobe-tailkt.lua
│ │ └── usdt_ruby.lua
│ ├── networking/
│ │ ├── CMakeLists.txt
│ │ ├── distributed_bridge/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── main.py
│ │ │ ├── tunnel.c
│ │ │ ├── tunnel.py
│ │ │ ├── tunnel_mesh.c
│ │ │ └── tunnel_mesh.py
│ │ ├── dns_matching/
│ │ │ ├── dns_matching.c
│ │ │ └── dns_matching.py
│ │ ├── http_filter/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── http-parse-complete.c
│ │ │ ├── http-parse-complete.py
│ │ │ ├── http-parse-simple.c
│ │ │ └── http-parse-simple.py
│ │ ├── neighbor_sharing/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.txt
│ │ │ ├── tc_neighbor_sharing.c
│ │ │ └── tc_neighbor_sharing.py
│ │ ├── net_monitor.py
│ │ ├── simple_tc.py
│ │ ├── simulation.py
│ │ ├── sockmap.py
│ │ ├── tc_perf_event.py
│ │ ├── tcp_mon_block/
│ │ │ ├── README.md
│ │ │ └── src/
│ │ │ ├── allow_list.json
│ │ │ ├── http_client.py
│ │ │ ├── tcp_mon_block.c
│ │ │ ├── tcp_mon_block.py
│ │ │ └── web_server.py
│ │ ├── tunnel_monitor/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── main.py
│ │ │ ├── monitor.c
│ │ │ ├── monitor.py
│ │ │ ├── setup.sh
│ │ │ └── traffic.sh
│ │ ├── vlan_filter/
│ │ │ ├── README.md
│ │ │ ├── data-plane-tracing.c
│ │ │ ├── data-plane-tracing.py
│ │ │ ├── test_setup.sh
│ │ │ └── test_traffic.sh
│ │ ├── vlan_learning/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.txt
│ │ │ ├── vlan_learning.c
│ │ │ └── vlan_learning.py
│ │ └── xdp/
│ │ ├── CMakeLists.txt
│ │ ├── xdp_drop_count.py
│ │ ├── xdp_macswap_count.py
│ │ ├── xdp_redirect_cpu.py
│ │ └── xdp_redirect_map.py
│ ├── perf/
│ │ └── ipc.py
│ ├── ringbuf/
│ │ ├── ringbuf_output.py
│ │ └── ringbuf_submit.py
│ ├── tracing/
│ │ ├── CMakeLists.txt
│ │ ├── biolatpcts.py
│ │ ├── biolatpcts_example.txt
│ │ ├── bitehist.py
│ │ ├── bitehist_example.txt
│ │ ├── dddos.py
│ │ ├── dddos_example.txt
│ │ ├── disksnoop.py
│ │ ├── disksnoop_example.txt
│ │ ├── hello_fields.py
│ │ ├── hello_perf_output.py
│ │ ├── hello_perf_output_using_ns.py
│ │ ├── kvm_hypercall.py
│ │ ├── kvm_hypercall.txt
│ │ ├── lbr.py
│ │ ├── mallocstacks.py
│ │ ├── mysqld_query.py
│ │ ├── mysqld_query_example.txt
│ │ ├── nflatency.py
│ │ ├── nodejs_http_server.py
│ │ ├── nodejs_http_server_example.txt
│ │ ├── setuid_monitor.py
│ │ ├── setuid_monitor_example.txt
│ │ ├── stack_buildid_example.py
│ │ ├── stacksnoop.py
│ │ ├── stacksnoop_example.txt
│ │ ├── strlen_count.py
│ │ ├── strlen_hist.py
│ │ ├── strlen_hist_ifunc.py
│ │ ├── strlen_snoop.py
│ │ ├── sync_timing.py
│ │ ├── task_switch.c
│ │ ├── task_switch.py
│ │ ├── tcpv4connect.py
│ │ ├── tcpv4connect_example.txt
│ │ ├── trace_fields.py
│ │ ├── trace_perf_output.py
│ │ ├── undump.py
│ │ ├── undump_example.txt
│ │ ├── urandomread-explicit.py
│ │ ├── urandomread.py
│ │ ├── urandomread_example.txt
│ │ ├── vfsreadlat.c
│ │ ├── vfsreadlat.py
│ │ └── vfsreadlat_example.txt
│ └── usdt_sample/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── scripts/
│ │ ├── bpf_text_shared.c
│ │ ├── lat_avg.py
│ │ ├── lat_dist.py
│ │ └── latency.py
│ ├── usdt_sample.md
│ ├── usdt_sample.sh
│ ├── usdt_sample_app1/
│ │ ├── CMakeLists.txt
│ │ └── main.cpp
│ └── usdt_sample_lib1/
│ ├── CMakeLists.txt
│ ├── include/
│ │ └── usdt_sample_lib1/
│ │ └── lib1.h
│ └── src/
│ ├── lib1.cpp
│ ├── lib1_sdt.d
│ └── lib1_sdt.h
├── introspection/
│ ├── CMakeLists.txt
│ ├── bps.c
│ └── bps_example.txt
├── libbpf-tools/
│ ├── .gitignore
│ ├── Makefile
│ ├── Makefile.btfgen
│ ├── README.md
│ ├── arm64/
│ │ └── vmlinux_614.h
│ ├── bashreadline.bpf.c
│ ├── bashreadline.c
│ ├── bashreadline.h
│ ├── bindsnoop.bpf.c
│ ├── bindsnoop.c
│ ├── bindsnoop.h
│ ├── biolatency.bpf.c
│ ├── biolatency.c
│ ├── biolatency.h
│ ├── biopattern.bpf.c
│ ├── biopattern.c
│ ├── biopattern.h
│ ├── biosnoop.bpf.c
│ ├── biosnoop.c
│ ├── biosnoop.h
│ ├── biostacks.bpf.c
│ ├── biostacks.c
│ ├── biostacks.h
│ ├── biotop.bpf.c
│ ├── biotop.c
│ ├── biotop.h
│ ├── bitesize.bpf.c
│ ├── bitesize.c
│ ├── bitesize.h
│ ├── bits.bpf.h
│ ├── blk_types.h
│ ├── btf_helpers.c
│ ├── btf_helpers.h
│ ├── cachestat.bpf.c
│ ├── cachestat.c
│ ├── capable.bpf.c
│ ├── capable.c
│ ├── capable.h
│ ├── compat.bpf.h
│ ├── compat.c
│ ├── compat.h
│ ├── core_fixes.bpf.h
│ ├── cpudist.bpf.c
│ ├── cpudist.c
│ ├── cpudist.h
│ ├── cpufreq.bpf.c
│ ├── cpufreq.c
│ ├── cpufreq.h
│ ├── drsnoop.bpf.c
│ ├── drsnoop.c
│ ├── drsnoop.h
│ ├── drsnoop_example.txt
│ ├── errno_helpers.c
│ ├── errno_helpers.h
│ ├── execsnoop.bpf.c
│ ├── execsnoop.c
│ ├── execsnoop.h
│ ├── exitsnoop.bpf.c
│ ├── exitsnoop.c
│ ├── exitsnoop.h
│ ├── filelife.bpf.c
│ ├── filelife.c
│ ├── filelife.h
│ ├── filetop.bpf.c
│ ├── filetop.c
│ ├── filetop.h
│ ├── fsdist.bpf.c
│ ├── fsdist.c
│ ├── fsdist.h
│ ├── fsslower.bpf.c
│ ├── fsslower.c
│ ├── fsslower.h
│ ├── funclatency.bpf.c
│ ├── funclatency.c
│ ├── funclatency.h
│ ├── futexctn.bpf.c
│ ├── futexctn.c
│ ├── futexctn.h
│ ├── gethostlatency.bpf.c
│ ├── gethostlatency.c
│ ├── gethostlatency.h
│ ├── hardirqs.bpf.c
│ ├── hardirqs.c
│ ├── hardirqs.h
│ ├── ioctl_names.h
│ ├── javagc.bpf.c
│ ├── javagc.c
│ ├── javagc.h
│ ├── kernel.config
│ ├── klockstat.bpf.c
│ ├── klockstat.c
│ ├── klockstat.h
│ ├── ksnoop.bpf.c
│ ├── ksnoop.c
│ ├── ksnoop.h
│ ├── llcstat.bpf.c
│ ├── llcstat.c
│ ├── llcstat.h
│ ├── loongarch/
│ │ └── vmlinux_614.h
│ ├── map_helpers.c
│ ├── map_helpers.h
│ ├── maps.bpf.h
│ ├── mdflush.bpf.c
│ ├── mdflush.c
│ ├── mdflush.h
│ ├── memleak.bpf.c
│ ├── memleak.c
│ ├── memleak.h
│ ├── mountsnoop.bpf.c
│ ├── mountsnoop.c
│ ├── mountsnoop.h
│ ├── numamove.bpf.c
│ ├── numamove.c
│ ├── offcputime.bpf.c
│ ├── offcputime.c
│ ├── offcputime.h
│ ├── oomkill.bpf.c
│ ├── oomkill.c
│ ├── oomkill.h
│ ├── opensnoop.bpf.c
│ ├── opensnoop.c
│ ├── opensnoop.h
│ ├── path_helpers.bpf.h
│ ├── path_helpers.c
│ ├── path_helpers.h
│ ├── powerpc/
│ │ └── vmlinux_614.h
│ ├── profile.bpf.c
│ ├── profile.c
│ ├── profile.h
│ ├── readahead.bpf.c
│ ├── readahead.c
│ ├── readahead.h
│ ├── riscv/
│ │ └── vmlinux_614.h
│ ├── runqlat.bpf.c
│ ├── runqlat.c
│ ├── runqlat.h
│ ├── runqlen.bpf.c
│ ├── runqlen.c
│ ├── runqlen.h
│ ├── runqslower.bpf.c
│ ├── runqslower.c
│ ├── runqslower.h
│ ├── runqslower_example.txt
│ ├── s390/
│ │ └── vmlinux_614.h
│ ├── sigsnoop.bpf.c
│ ├── sigsnoop.c
│ ├── sigsnoop.h
│ ├── sigsnoop_example.txt
│ ├── slabratetop.bpf.c
│ ├── slabratetop.c
│ ├── slabratetop.h
│ ├── softirqs.bpf.c
│ ├── softirqs.c
│ ├── softirqs.h
│ ├── solisten.bpf.c
│ ├── solisten.c
│ ├── solisten.h
│ ├── stat.h
│ ├── statsnoop.bpf.c
│ ├── statsnoop.c
│ ├── statsnoop.h
│ ├── syncsnoop.bpf.c
│ ├── syncsnoop.c
│ ├── syncsnoop.h
│ ├── syscall_helpers.c
│ ├── syscall_helpers.h
│ ├── syscount.bpf.c
│ ├── syscount.c
│ ├── syscount.h
│ ├── tcpconnect.bpf.c
│ ├── tcpconnect.c
│ ├── tcpconnect.h
│ ├── tcpconnlat.bpf.c
│ ├── tcpconnlat.c
│ ├── tcpconnlat.h
│ ├── tcplife.bpf.c
│ ├── tcplife.c
│ ├── tcplife.h
│ ├── tcppktlat.bpf.c
│ ├── tcppktlat.c
│ ├── tcppktlat.h
│ ├── tcppktlat_example.txt
│ ├── tcprtt.bpf.c
│ ├── tcprtt.c
│ ├── tcprtt.h
│ ├── tcpstates.bpf.c
│ ├── tcpstates.c
│ ├── tcpstates.h
│ ├── tcpsynbl.bpf.c
│ ├── tcpsynbl.c
│ ├── tcpsynbl.h
│ ├── tcptop.bpf.c
│ ├── tcptop.c
│ ├── tcptop.h
│ ├── tcptop_example.txt
│ ├── tcptracer.bpf.c
│ ├── tcptracer.c
│ ├── tcptracer.h
│ ├── trace_helpers.c
│ ├── trace_helpers.h
│ ├── uprobe_helpers.c
│ ├── uprobe_helpers.h
│ ├── vfsstat.bpf.c
│ ├── vfsstat.c
│ ├── vfsstat.h
│ ├── wakeuptime.bpf.c
│ ├── wakeuptime.c
│ ├── wakeuptime.h
│ └── x86/
│ └── vmlinux_614.h
├── man/
│ ├── CMakeLists.txt
│ └── man8/
│ ├── CMakeLists.txt
│ ├── argdist.8
│ ├── bashreadline.8
│ ├── bindsnoop.8
│ ├── biolatency.8
│ ├── biolatpcts.8
│ ├── biopattern.8
│ ├── biosnoop.8
│ ├── biotop.8
│ ├── bitesize.8
│ ├── bpflist.8
│ ├── bps.8
│ ├── btrfsdist.8
│ ├── btrfsslower.8
│ ├── cachestat.8
│ ├── cachetop.8
│ ├── capable.8
│ ├── compactsnoop.8
│ ├── cpudist.8
│ ├── cpuunclaimed.8
│ ├── criticalstat.8
│ ├── dbslower.8
│ ├── dbstat.8
│ ├── dcsnoop.8
│ ├── dcstat.8
│ ├── deadlock.8
│ ├── dirtop.8
│ ├── drsnoop.8
│ ├── execsnoop.8
│ ├── exitsnoop.8
│ ├── ext4dist.8
│ ├── ext4slower.8
│ ├── f2fsslower.8
│ ├── filegone.8
│ ├── filelife.8
│ ├── fileslower.8
│ ├── filetop.8
│ ├── funccount.8
│ ├── funcinterval.8
│ ├── funclatency.8
│ ├── funcslower.8
│ ├── gethostlatency.8
│ ├── hardirqs.8
│ ├── inject.8
│ ├── killsnoop.8
│ ├── klockstat.8
│ ├── ksnoop.8
│ ├── kvmexit.8
│ ├── llcstat.8
│ ├── mdflush.8
│ ├── memleak.8
│ ├── mountsnoop.8
│ ├── mysqld_qslower.8
│ ├── netqtop.8
│ ├── nfsdist.8
│ ├── nfsslower.8
│ ├── numasched.8
│ ├── offcputime.8
│ ├── offwaketime.8
│ ├── oomkill.8
│ ├── opensnoop.8
│ ├── pidpersec.8
│ ├── ppchcalls.8
│ ├── profile.8
│ ├── rdmaucma.8
│ ├── readahead.8
│ ├── reset-trace.8
│ ├── runqlat.8
│ ├── runqlen.8
│ ├── runqslower.8
│ ├── shmsnoop.8
│ ├── slabratetop.8
│ ├── sofdsnoop.8
│ ├── softirqs.8
│ ├── softirqslower.8
│ ├── solisten.8
│ ├── spfdsnoop.8
│ ├── sslsniff.8
│ ├── stackcount.8
│ ├── statsnoop.8
│ ├── swapin.8
│ ├── syncsnoop.8
│ ├── syscount.8
│ ├── tcpaccept.8
│ ├── tcpcong.8
│ ├── tcpconnect.8
│ ├── tcpconnlat.8
│ ├── tcpdrop.8
│ ├── tcplife.8
│ ├── tcpretrans.8
│ ├── tcprtt.8
│ ├── tcpstates.8
│ ├── tcpsubnet.8
│ ├── tcpsynbl.8
│ ├── tcptop.8
│ ├── tcptracer.8
│ ├── threadsnoop.8
│ ├── tplist.8
│ ├── trace.8
│ ├── ttysnoop.8
│ ├── ucalls.8
│ ├── uflow.8
│ ├── ugc.8
│ ├── uobjnew.8
│ ├── ustat.8
│ ├── uthreads.8
│ ├── vfscount.8
│ ├── vfsstat.8
│ ├── virtiostat.8
│ ├── wakeuptime.8
│ ├── wqlat.8
│ ├── xfsdist.8
│ ├── xfsslower.8
│ ├── zfsdist.8
│ └── zfsslower.8
├── scripts/
│ ├── README.md
│ ├── bpf_demo.ks.erb
│ ├── build-deb.sh
│ ├── build-deb.sh.in
│ ├── build-release-rpm.sh
│ ├── build-rpm.sh
│ ├── build_bpf_demo.sh
│ ├── c-style-check.sh
│ ├── check-helpers.sh
│ ├── docker/
│ │ ├── auth.sh
│ │ ├── build.sh
│ │ └── push.sh
│ ├── git-clang-format
│ ├── git-tag.sh
│ └── py-style-check.sh
├── snap/
│ ├── README.md
│ ├── local/
│ │ └── bcc-wrapper
│ └── snapcraft.yaml
├── src/
│ ├── CMakeLists.txt
│ ├── cc/
│ │ ├── CMakeLists.txt
│ │ ├── README
│ │ ├── api/
│ │ │ ├── BPF.cc
│ │ │ ├── BPF.h
│ │ │ ├── BPFTable.cc
│ │ │ ├── BPFTable.h
│ │ │ └── CMakeLists.txt
│ │ ├── bcc_btf.cc
│ │ ├── bcc_btf.h
│ │ ├── bcc_common.cc
│ │ ├── bcc_common.h
│ │ ├── bcc_debug.cc
│ │ ├── bcc_debug.h
│ │ ├── bcc_elf.c
│ │ ├── bcc_elf.h
│ │ ├── bcc_exception.h
│ │ ├── bcc_libbpf_inc.h
│ │ ├── bcc_perf_map.c
│ │ ├── bcc_perf_map.h
│ │ ├── bcc_proc.c
│ │ ├── bcc_proc.h
│ │ ├── bcc_syms.cc
│ │ ├── bcc_syms.h
│ │ ├── bcc_usdt.h
│ │ ├── bcc_version.h.in
│ │ ├── bcc_zip.c
│ │ ├── bcc_zip.h
│ │ ├── bpf_module.cc
│ │ ├── bpf_module.h
│ │ ├── bpf_module_rw_engine.cc
│ │ ├── bpf_module_rw_engine_disabled.cc
│ │ ├── bpffs_table.cc
│ │ ├── clang/
│ │ │ └── include/
│ │ │ └── stdarg.h
│ │ ├── common.cc
│ │ ├── common.h
│ │ ├── compat/
│ │ │ └── linux/
│ │ │ └── virtual_bpf.h
│ │ ├── export/
│ │ │ ├── bpf_workaround.h
│ │ │ ├── footer.h
│ │ │ ├── helpers.h
│ │ │ └── proto.h
│ │ ├── exported_files.cc
│ │ ├── exported_files.h
│ │ ├── file_desc.h
│ │ ├── frontends/
│ │ │ ├── CMakeLists.txt
│ │ │ └── clang/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── arch_helper.h
│ │ │ ├── b_frontend_action.cc
│ │ │ ├── b_frontend_action.h
│ │ │ ├── frontend_action_common.h
│ │ │ ├── kbuild_helper.cc
│ │ │ ├── kbuild_helper.h
│ │ │ ├── loader.cc
│ │ │ ├── loader.h
│ │ │ ├── tp_frontend_action.cc
│ │ │ └── tp_frontend_action.h
│ │ ├── json_map_decl_visitor.cc
│ │ ├── libbcc.pc.in
│ │ ├── libbpf.c
│ │ ├── libbpf.h
│ │ ├── link_all.cc
│ │ ├── perf_reader.c
│ │ ├── perf_reader.h
│ │ ├── setns.h
│ │ ├── shared_table.cc
│ │ ├── syms.h
│ │ ├── table_desc.h
│ │ ├── table_storage.cc
│ │ ├── table_storage.h
│ │ ├── table_storage_impl.h
│ │ ├── usdt/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── usdt.cc
│ │ │ └── usdt_args.cc
│ │ ├── usdt.h
│ │ └── vendor/
│ │ ├── optional.hpp
│ │ └── tinyformat.hpp
│ ├── lua/
│ │ ├── .busted
│ │ ├── .luacheckrc
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── bcc/
│ │ │ ├── bpf.lua
│ │ │ ├── init.lua
│ │ │ ├── libbcc.lua
│ │ │ ├── run.lua
│ │ │ ├── sym.lua
│ │ │ ├── table.lua
│ │ │ ├── tracerpipe.lua
│ │ │ ├── usdt.lua
│ │ │ └── vendor/
│ │ │ ├── argparse.lua
│ │ │ ├── helpers.lua
│ │ │ ├── json.lua
│ │ │ ├── middleclass.lua
│ │ │ └── posix.lua
│ │ ├── bcc-probe
│ │ ├── bpf/
│ │ │ ├── bpf.lua
│ │ │ ├── builtins.lua
│ │ │ ├── cdef.lua
│ │ │ ├── elf.lua
│ │ │ ├── init.lua
│ │ │ ├── ljbytecode.lua
│ │ │ ├── proto.lua
│ │ │ └── spec/
│ │ │ ├── README.md
│ │ │ ├── codegen_spec.lua
│ │ │ ├── compile_spec.lua
│ │ │ ├── decoder_spec.lua
│ │ │ ├── elf_spec.lua
│ │ │ └── helper.lua
│ │ ├── bpf-scm-1.rockspec
│ │ ├── squishy
│ │ └── src/
│ │ ├── main.c
│ │ └── squish.lua
│ └── python/
│ ├── CMakeLists.txt
│ ├── bcc/
│ │ ├── __init__.py
│ │ ├── containers.py
│ │ ├── disassembler.py
│ │ ├── exec.py
│ │ ├── libbcc.py
│ │ ├── perf.py
│ │ ├── syscall.py
│ │ ├── table.py
│ │ ├── tcp.py
│ │ ├── usdt.py
│ │ ├── utils.py
│ │ └── version.py.in
│ └── setup.py.in
├── tests/
│ ├── CMakeLists.txt
│ ├── cc/
│ │ ├── CMakeLists.txt
│ │ ├── catch.hpp
│ │ ├── debuginfo_test_lib.cc
│ │ ├── dummy_proc_map.txt
│ │ ├── test_array_table.cc
│ │ ├── test_bpf_table.cc
│ │ ├── test_c_api.cc
│ │ ├── test_cg_storage.cc
│ │ ├── test_hash_table.cc
│ │ ├── test_libbcc.cc
│ │ ├── test_map_in_map.cc
│ │ ├── test_parse_tracepoint.cc
│ │ ├── test_perf_event.cc
│ │ ├── test_pinned_table.cc
│ │ ├── test_prog_table.cc
│ │ ├── test_queuestack_table.cc
│ │ ├── test_shared_table.cc
│ │ ├── test_sk_storage.cc
│ │ ├── test_sock_table.cc
│ │ ├── test_static.c
│ │ ├── test_usdt_args.cc
│ │ ├── test_usdt_probes.cc
│ │ ├── test_zip.cc
│ │ ├── usdt_test_lib.cc
│ │ └── utils.cc
│ ├── lua/
│ │ ├── .busted
│ │ ├── .luacheckrc
│ │ ├── CMakeLists.txt
│ │ ├── luaunit.lua
│ │ ├── test_clang.lua
│ │ ├── test_dump.lua
│ │ ├── test_helper.lua
│ │ ├── test_standalone.sh
│ │ └── test_uprobes.lua
│ ├── python/
│ │ ├── CMakeLists.txt
│ │ ├── dummy.cc
│ │ ├── include/
│ │ │ └── folly/
│ │ │ └── tracing/
│ │ │ ├── StaticTracepoint-ELFx86.h
│ │ │ └── StaticTracepoint.h
│ │ ├── test_array.py
│ │ ├── test_attach_perf_event.py
│ │ ├── test_bpf_log.py
│ │ ├── test_brb.c
│ │ ├── test_brb.py
│ │ ├── test_brb2.c
│ │ ├── test_brb2.py
│ │ ├── test_call1.c
│ │ ├── test_call1.py
│ │ ├── test_clang.py
│ │ ├── test_clang_complex.c
│ │ ├── test_debuginfo.py
│ │ ├── test_disassembler.py
│ │ ├── test_dump_func.py
│ │ ├── test_flags.py
│ │ ├── test_histogram.py
│ │ ├── test_license.py
│ │ ├── test_lpm_trie.py
│ │ ├── test_lru.py
│ │ ├── test_map_batch_ops.py
│ │ ├── test_map_in_map.py
│ │ ├── test_percpu.py
│ │ ├── test_perf_event.py
│ │ ├── test_probe_count.py
│ │ ├── test_queuestack.py
│ │ ├── test_ringbuf.py
│ │ ├── test_rlimit.py
│ │ ├── test_shared_table.py
│ │ ├── test_stackid.py
│ │ ├── test_stat1.c
│ │ ├── test_stat1.py
│ │ ├── test_tools_memleak.py
│ │ ├── test_tools_memleak_leaker_app.c
│ │ ├── test_tools_smoke.py
│ │ ├── test_trace2.c
│ │ ├── test_trace2.py
│ │ ├── test_trace3.c
│ │ ├── test_trace3.py
│ │ ├── test_trace4.py
│ │ ├── test_trace_maxactive.py
│ │ ├── test_tracepoint.py
│ │ ├── test_uprobes.py
│ │ ├── test_uprobes2.py
│ │ ├── test_usdt.py
│ │ ├── test_usdt2.py
│ │ ├── test_usdt3.py
│ │ ├── test_utils.py
│ │ ├── test_xlate1.c
│ │ ├── test_xlate1.py
│ │ └── utils.py
│ └── wrapper.sh.in
└── tools/
├── CMakeLists.txt
├── argdist.py
├── argdist_example.txt
├── bashreadline.py
├── bashreadline_example.txt
├── bindsnoop.py
├── bindsnoop_example.txt
├── biolatency.py
├── biolatency_example.txt
├── biolatpcts.py
├── biolatpcts_example.txt
├── biopattern.py
├── biopattern_example.txt
├── biosnoop.lua
├── biosnoop.py
├── biosnoop_example.txt
├── biotop.py
├── biotop_example.txt
├── bitesize.py
├── bitesize_example.txt
├── bpflist.py
├── bpflist_example.txt
├── btrfsdist.py
├── btrfsdist_example.txt
├── btrfsslower.py
├── btrfsslower_example.txt
├── cachestat.py
├── cachestat_example.txt
├── cachetop.py
├── cachetop_example.txt
├── capable.py
├── capable_example.txt
├── cobjnew.sh
├── compactsnoop.py
├── compactsnoop_example.txt
├── cpudist.py
├── cpudist_example.txt
├── cpuunclaimed.py
├── cpuunclaimed_example.txt
├── criticalstat.py
├── criticalstat_example.txt
├── dbslower.py
├── dbslower_example.txt
├── dbstat.py
├── dbstat_example.txt
├── dcsnoop.py
├── dcsnoop_example.txt
├── dcstat.py
├── dcstat_example.txt
├── deadlock.c
├── deadlock.py
├── deadlock_example.txt
├── dirtop.py
├── dirtop_example.txt
├── drsnoop.py
├── drsnoop_example.txt
├── execsnoop.py
├── execsnoop_example.txt
├── exitsnoop.py
├── exitsnoop_example.txt
├── ext4dist.py
├── ext4dist_example.txt
├── ext4slower.py
├── ext4slower_example.txt
├── f2fsslower.py
├── f2fsslower_example.txt
├── filegone.py
├── filegone_example.txt
├── filelife.py
├── filelife_example.txt
├── fileslower.py
├── fileslower_example.txt
├── filetop.py
├── filetop_example.txt
├── funccount.py
├── funccount_example.txt
├── funcinterval.py
├── funcinterval_example.txt
├── funclatency.py
├── funclatency_example.txt
├── funcslower.py
├── funcslower_example.txt
├── gethostlatency.py
├── gethostlatency_example.txt
├── hardirqs.py
├── hardirqs_example.txt
├── inject.py
├── inject_example.txt
├── javacalls.sh
├── javaflow.sh
├── javagc.sh
├── javaobjnew.sh
├── javastat.sh
├── javathreads.sh
├── killsnoop.py
├── killsnoop_example.txt
├── klockstat.py
├── klockstat_example.txt
├── kvmexit.py
├── kvmexit_example.txt
├── lib/
│ ├── CMakeLists.txt
│ ├── ucalls.py
│ ├── ucalls_example.txt
│ ├── uflow.py
│ ├── uflow_example.txt
│ ├── ugc.py
│ ├── ugc_example.txt
│ ├── uobjnew.py
│ ├── uobjnew_example.txt
│ ├── ustat.py
│ ├── ustat_example.txt
│ ├── uthreads.py
│ └── uthreads_example.txt
├── llcstat.py
├── llcstat_example.txt
├── mdflush.py
├── mdflush_example.txt
├── memleak.py
├── memleak_example.txt
├── mountsnoop.py
├── mountsnoop_example.txt
├── mptcpify.py
├── mptcpify_example.txt
├── mysqld_qslower.py
├── mysqld_qslower_example.txt
├── netqtop.c
├── netqtop.py
├── netqtop_example.txt
├── nfsdist.py
├── nfsdist_example.txt
├── nfsslower.py
├── nfsslower_example.txt
├── nodegc.sh
├── nodestat.sh
├── numasched.py
├── numasched_example.txt
├── offcputime.py
├── offcputime_example.txt
├── offwaketime.py
├── offwaketime_example.txt
├── old/
│ ├── CMakeLists.txt
│ ├── bashreadline.py
│ ├── biosnoop.py
│ ├── compactsnoop.py
│ ├── filegone.py
│ ├── filelife.py
│ ├── gethostlatency.py
│ ├── hardirqs.py
│ ├── killsnoop.py
│ ├── memleak.py
│ ├── offcputime.py
│ ├── offwaketime.py
│ ├── oomkill.py
│ ├── opensnoop.py
│ ├── profile.py
│ ├── profile_example.txt
│ ├── softirqs.py
│ ├── stackcount.py
│ ├── stacksnoop.py
│ ├── statsnoop.py
│ ├── syncsnoop.py
│ ├── tcpaccept.py
│ ├── tcpconnect.py
│ ├── tcptop.py
│ └── wakeuptime.py
├── oomkill.py
├── oomkill_example.txt
├── opensnoop.py
├── opensnoop_example.txt
├── perlcalls.sh
├── perlflow.sh
├── perlstat.sh
├── phpcalls.sh
├── phpflow.sh
├── phpstat.sh
├── pidpersec.py
├── pidpersec_example.txt
├── ppchcalls.py
├── ppchcalls_example.txt
├── profile.py
├── profile_example.txt
├── pythoncalls.sh
├── pythonflow.sh
├── pythongc.sh
├── pythonstat.sh
├── rdmaucma.py
├── rdmaucma_example.txt
├── readahead.py
├── readahead_example.txt
├── reset-trace.sh
├── reset-trace_example.txt
├── rubycalls.sh
├── rubyflow.sh
├── rubygc.sh
├── rubyobjnew.sh
├── rubystat.sh
├── runqlat.py
├── runqlat_example.txt
├── runqlen.py
├── runqlen_example.txt
├── runqslower.py
├── runqslower_example.txt
├── shmsnoop.py
├── shmsnoop_example.txt
├── slabratetop.py
├── slabratetop_example.txt
├── sofdsnoop.py
├── sofdsnoop_example.txt
├── softirqs.py
├── softirqs_example.txt
├── softirqslower.py
├── softirqslower_example.txt
├── solisten.py
├── solisten_example.txt
├── sslsniff.py
├── sslsniff_example.txt
├── stackcount.py
├── stackcount_example.txt
├── stacksnoop.lua
├── statsnoop.py
├── statsnoop_example.txt
├── swapin.py
├── swapin_example.txt
├── syncsnoop.py
├── syncsnoop_example.txt
├── syscount.py
├── syscount_example.txt
├── tclcalls.sh
├── tclflow.sh
├── tclobjnew.sh
├── tclstat.sh
├── tcpaccept.py
├── tcpaccept_example.txt
├── tcpcong.py
├── tcpcong_example.txt
├── tcpconnect.py
├── tcpconnect_example.txt
├── tcpconnlat.py
├── tcpconnlat_example.txt
├── tcpdrop.py
├── tcpdrop_example.txt
├── tcplife.lua
├── tcplife.py
├── tcplife_example.txt
├── tcpretrans.py
├── tcpretrans_example.txt
├── tcprtt.py
├── tcprtt_example.txt
├── tcpstates.py
├── tcpstates_example.txt
├── tcpsubnet.py
├── tcpsubnet_example.txt
├── tcpsynbl.py
├── tcpsynbl_example.txt
├── tcptop.py
├── tcptop_example.txt
├── tcptracer.py
├── tcptracer_example.txt
├── threadsnoop.py
├── threadsnoop_example.txt
├── tplist.py
├── tplist_example.txt
├── trace.py
├── trace_example.txt
├── ttysnoop.py
├── ttysnoop_example.txt
├── vfscount.py
├── vfscount_example.txt
├── vfsstat.py
├── vfsstat_example.txt
├── virtiostat.py
├── virtiostat_example.txt
├── wakeuptime.py
├── wakeuptime_example.txt
├── wqlat.py
├── wqlat_example.txt
├── xfsdist.py
├── xfsdist_example.txt
├── xfsslower.py
├── xfsslower_example.txt
├── zfsdist.py
├── zfsdist_example.txt
├── zfsslower.py
└── zfsslower_example.txt
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
---
BasedOnStyle: Google
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
IndentCaseLabels: false
AccessModifierOffset: -1
================================================
FILE: .dockerignore
================================================
Dockerfile*
build
.*.swp
docker/Dockerfile*
================================================
FILE: .github/actions/build-container/action.yml
================================================
name: "Build/Push container"
description: "Build a BCC CI container and push it when not a pull-request."
inputs:
os_distro:
description: "OS Disctribution. Ex: ubuntu"
required: true
os_version:
description: "Version of the OS. Ex: 24.04"
required: true
os_nick:
description: "Nickname of the OS. Ex: noble"
required: true
llvm_versions:
description: "Space separated list of llvm versions to install in the container. Only supported for Ubuntu containers."
type: string
default: "15"
registry:
description: "Registry where to push images"
default: ghcr.io
password:
description: "Password used to log into the docker registry."
push:
description: "Whether or not to push the build image"
type: boolean
default: false
runs:
using: "composite"
steps:
# Login against registry except on PR
# https://github.com/docker/login-action
- name: Log into registry ${{ inputs.registry }}
if: ${{ inputs.push == 'true' && github.event_name != 'pull_request' }}
uses: docker/login-action@v2
with:
registry: ${{ inputs.registry }}
username: ${{ github.actor }}
password: ${{ inputs.password }}
- name: Build and push
uses: docker/build-push-action@v3
with:
push: ${{ inputs.push == 'true' && github.event_name != 'pull_request' }}
build-args: |
VERSION=${{ inputs.os_version }}
SHORTNAME=${{ inputs.os_nick }}
LLVM_VERSION=${{ inputs.llvm_versions }}
file: docker/build/Dockerfile.${{ inputs.os_distro }}
tags: ${{ inputs.registry }}/${{ github.repository }}:${{ inputs.os_distro }}-${{ inputs.os_version }}
================================================
FILE: .github/scripts/check_links.py
================================================
#! /usr/bin/env python3
import re
import requests
import os
from pathlib import Path
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
timeout = 10
links_file = Path('LINKS.md')
content = links_file.read_text(encoding='utf-8')
link_pattern = re.compile(r'\[([^\]]+)\]\(([^)]+)\)')
links = link_pattern.findall(content)
broken_links = []
for text, url in links:
try:
print(f"Checking: {url}")
response = requests.head(url, headers=headers, timeout=timeout, allow_redirects=True)
if response.status_code >= 400:
response = requests.get(url, headers=headers, timeout=timeout, allow_redirects=True)
if response.status_code >= 400:
broken_links.append((text, url, response.status_code))
except Exception as e:
broken_links.append((text, url, str(e)))
if broken_links:
report = "# Broken Links Report\n\n"
report += "The following links in LINKS.md are broken:\n\n"
report += "| Link Text | URL | Error |\n"
report += "|-----------|-----|-------|\n"
for text, url, error in broken_links:
report += f"| {text} | {url} | {error} |\n"
with open(os.environ['GITHUB_OUTPUT'], 'a') as f:
delimiter = "_REPORT_DELIMITER_"
f.write(f"broken_links=true\n")
f.write(f"report<<{delimiter}\n{report}\n{delimiter}\n")
else:
with open(os.environ['GITHUB_OUTPUT'], 'a') as f:
f.write("broken_links=false\n")
================================================
FILE: .github/workflows/bcc-test.yml
================================================
name: BCC Build and tests
on:
push:
branches:
- master
pull_request:
env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
permissions:
contents: read # to fetch code (actions/checkout)
pull-requests: read # to read pull requests (dorny/paths-filter)
jobs:
test_bcc:
runs-on: ubuntu-24.04
strategy:
matrix:
os: [{distro: "ubuntu", version: "24.04", nick: noble}]
llvm_version: [15, 17, 19]
env:
- TYPE: Debug
PYTHON_TEST_LOGFILE: critical.log
RW_ENGINE_ENABLED: ON
- TYPE: Debug
PYTHON_TEST_LOGFILE: critical.log
RW_ENGINE_ENABLED: OFF
- TYPE: Release
PYTHON_TEST_LOGFILE: critical.log
RW_ENGINE_ENABLED: ON
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
docker:
- 'docker/build/**'
- name: System info
run: |
uname -a
ip addr
- name: Pull docker container
if: steps.changes.outputs.docker == 'false'
run: |
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.os.distro }}-${{ matrix.os.version }}
- name: Build docker container
if: steps.changes.outputs.docker == 'true'
uses: ./.github/actions/build-container
with:
os_distro: ${{ matrix.os.distro }}
os_version: ${{ matrix.os.version }}
os_nick: ${{ matrix.os.nick }}
llvm_versions: ${{ matrix.llvm_version }}
- name: Tag docker container
run: |
docker tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.os.distro }}-${{ matrix.os.version }} bcc-docker
- name: Run bcc build - llvm-${{ matrix.llvm_version }}
env: ${{ matrix.env }}
run: |
/bin/bash -c \
"docker run --privileged \
--pid=host \
-v $(pwd):/bcc \
-v /sys/kernel/debug:/sys/kernel/debug:rw \
-v /lib/modules:/lib/modules:ro \
-v /usr/src:/usr/src:ro \
-v /usr/include/linux:/usr/include/linux:ro \
bcc-docker \
/bin/bash -c \
'mkdir -p /bcc/build && cd /bcc/build && \
LLVM_ROOT=/usr/lib/llvm-${{ matrix.llvm_version }} cmake -DCMAKE_BUILD_TYPE=${TYPE} -DENABLE_LLVM_NATIVECODEGEN=${RW_ENGINE_ENABLED} .. && make -j9'"
- name: Run bcc's cc tests
env: ${{ matrix.env }}
# tests are wrapped with `script` as a hack to get a TTY as github actions doesn't provide this
# see https://github.com/actions/runner/issues/241
run: |
script -e -c /bin/bash -c \
"docker run -ti \
--privileged \
--network=host \
--pid=host \
-v $(pwd):/bcc \
-v /sys/kernel/debug:/sys/kernel/debug:rw \
-v /lib/modules:/lib/modules:ro \
-v /usr/src:/usr/src:ro \
-e CTEST_OUTPUT_ON_FAILURE=1 \
bcc-docker \
/bin/bash -c \
'/bcc/build/tests/wrapper.sh \
c_test_all sudo /bcc/build/tests/cc/test_libbcc'"
- name: Run all tests
env: ${{ matrix.env }}
run: |
script -e -c /bin/bash -c \
"docker run -ti \
--privileged \
--network=host \
--pid=host \
-v $(pwd):/bcc \
-v /sys/kernel/debug:/sys/kernel/debug:rw \
-v /lib/modules:/lib/modules:ro \
-v /usr/src:/usr/src:ro \
-e CTEST_OUTPUT_ON_FAILURE=1 \
bcc-docker \
/bin/bash -c \
'cd /bcc/build && \
make test PYTHON_TEST_LOGFILE=$PYTHON_TEST_LOGFILE ARGS=-V'"
- name: Check critical tests
env: ${{ matrix.env }}
run: |
critical_count=$(grep @mayFail tests/python/critical.log | wc -l)
echo "There were $critical_count critical tests skipped with @mayFail:"
grep -A2 @mayFail tests/python/critical.log
- uses: actions/upload-artifact@v4
with:
name: critical-tests-${{ matrix.env['TYPE'] }}-${{ matrix.os.version }}
path: tests/python/critical.log
overwrite: true
test_bcc_fedora:
runs-on: ubuntu-24.04
strategy:
matrix:
os: [{distro: "fedora", version: "38", nick: "f38"}]
env:
- TYPE: Debug
PYTHON_TEST_LOGFILE: critical.log
- TYPE: Release
PYTHON_TEST_LOGFILE: critical.log
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
docker:
- 'docker/build/**'
- name: System info
run: |
uname -a
ip addr
- name: Pull docker container
if: steps.changes.outputs.docker == 'false'
run: |
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.os.distro }}-${{ matrix.os.version }}
- name: Build docker container
if: steps.changes.outputs.docker == 'true'
uses: ./.github/actions/build-container
with:
os_distro: ${{ matrix.os.distro }}
os_version: ${{ matrix.os.version }}
os_nick: ${{ matrix.os.nick }}
- name: Tag docker container
run: |
docker tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ matrix.os.distro }}-${{ matrix.os.version }} bcc-docker
- name: Run bcc build
env: ${{ matrix.env }}
run: |
/bin/bash -c \
"docker run --privileged \
--pid=host \
-v $(pwd):/bcc \
-v /sys/kernel/debug:/sys/kernel/debug:rw \
-v /lib/modules:/lib/modules:ro \
-v /usr/src:/usr/src:ro \
-v /usr/include/linux:/usr/include/linux:ro \
bcc-docker \
/bin/bash -c \
'mkdir -p /bcc/build && cd /bcc/build && \
cmake -DCMAKE_BUILD_TYPE=${TYPE} -DENABLE_LLVM_SHARED=ON -DRUN_LUA_TESTS=OFF .. && make -j9'"
- name: Run libbpf-tools build
env: ${{ matrix.env }}
run: |
/bin/bash -c \
"docker run --privileged \
--pid=host \
-v $(pwd):/bcc \
-v /sys/kernel/debug:/sys/kernel/debug:rw \
-v /lib/modules:/lib/modules:ro \
-v /usr/src:/usr/src:ro \
-v /usr/include/linux:/usr/include/linux:ro \
bcc-docker \
/bin/bash -c \
'cd /bcc/libbpf-tools && make -j9'"
- name: Run bcc's cc tests
env: ${{ matrix.env }}
# tests are wrapped with `script` as a hack to get a TTY as github actions doesn't provide this
# see https://github.com/actions/runner/issues/241
run: |
script -e -c /bin/bash -c \
"docker run -ti \
--privileged \
--network=host \
--pid=host \
-v $(pwd):/bcc \
-v /sys/kernel/debug:/sys/kernel/debug:rw \
-v /lib/modules:/lib/modules:ro \
-v /usr/src:/usr/src:ro \
-e CTEST_OUTPUT_ON_FAILURE=1 \
bcc-docker \
/bin/bash -c \
'/bcc/build/tests/wrapper.sh \
c_test_all sudo /bcc/build/tests/cc/test_libbcc'"
- name: Run all tests
env: ${{ matrix.env }}
run: |
script -e -c /bin/bash -c \
"docker run -ti \
--privileged \
--network=host \
--pid=host \
-v $(pwd):/bcc \
-v /sys/kernel/debug:/sys/kernel/debug:rw \
-v /lib/modules:/lib/modules:ro \
-v /usr/src:/usr/src:ro \
-e CTEST_OUTPUT_ON_FAILURE=1 \
bcc-docker \
/bin/bash -c \
'cd /bcc/build && \
make test PYTHON_TEST_LOGFILE=$PYTHON_TEST_LOGFILE ARGS=-V'"
- name: Check critical tests
env: ${{ matrix.env }}
run: |
critical_count=$(grep @mayFail tests/python/critical.log | wc -l)
echo "There were $critical_count critical tests skipped with @mayFail:"
grep -A2 @mayFail tests/python/critical.log
# To debug weird issues, you can add this step to be able to SSH to the test environment
# https://github.com/marketplace/actions/debugging-with-tmate
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v1
================================================
FILE: .github/workflows/check_links.yml
================================================
name: Check Broken Links
on:
schedule:
# First day of month at 00:00 in every 2nd month
- cron: '0 0 1 */2 *'
workflow_dispatch:
jobs:
check-links:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install requests
- name: Check links in LINKS.md
id: link-check
run: python .github/scripts/check_links.py
- name: Create issue for broken links
if: steps.link-check.outputs.broken_links == 'true'
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const report = `${{ steps.link-check.outputs.report }}`;
await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: 'Broken links detected in LINKS.md',
body: report,
labels: ['documentation']
});
================================================
FILE: .github/workflows/publish-build-containers.yml
================================================
name: Publish Build Containers
on:
# We want to update this image regularly and when updating master
schedule:
- cron: '00 18 * * *'
push:
branches:
- master
pull_request:
paths:
- 'docker/build/**'
permissions: {}
jobs:
publish_ghcr:
permissions:
contents: read # to fetch code (actions/checkout)
packages: write # to push container
name: Publish To GitHub Container Registry
runs-on: ubuntu-latest
strategy:
matrix:
os: [
{distro: "ubuntu", version: "24.04", nick: noble, installed_llvm_versions: "15 17 19"},
{distro: "fedora", version: "38", nick: "f38", installed_llvm_versions: "this is not used"},
]
steps:
- uses: actions/checkout@v4
- name: Build and push
uses: ./.github/actions/build-container
with:
os_distro: ${{ matrix.os.distro }}
os_version: ${{ matrix.os.version }}
os_nick: ${{ matrix.os.nick }}
llvm_versions: ${{ matrix.os.installed_llvm_versions }}
password: ${{ secrets.GITHUB_TOKEN }}
push: true
================================================
FILE: .github/workflows/publish.yml
================================================
name: Publish Build Artifacts
on:
push:
branches:
- master
pull_request:
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
# Optionally publish container images to custom docker repository,
# guarded by presence of all required github secrets.
# GitHub secrets can be configured as follows:
# - DOCKER_IMAGE = docker.io/myorg/bcc
# - DOCKER_USERNAME = username
# - DOCKER_PASSWORD = password
publish_dockerhub:
name: Publish To Dockerhub
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Initialize workflow variables
id: vars
shell: bash
run: |
if [ -n "${DOCKER_IMAGE}" ] && \
[ -n "${DOCKER_USERNAME}" ] && \
[ -n "${DOCKER_PASSWORD}" ];then
echo "Custom docker credentials set, will push an image"
echo ::set-output name=DOCKER_PUBLISH::true
else
echo "Custom docker credentials not, skipping"
fi
env:
DOCKER_IMAGE: ${{ secrets.DOCKER_IMAGE }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
- name: Build container image and publish to registry
id: publish-registry
uses: elgohr/Publish-Docker-Github-Action@v5
if: ${{ steps.vars.outputs.DOCKER_PUBLISH }}
with:
name: ${{ secrets.DOCKER_IMAGE }}
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
workdir: .
dockerfile: Dockerfile.ubuntu
snapshot: true
cache: ${{ github.event_name != 'schedule' }}
================================================
FILE: .gitignore
================================================
# Editor's files
*.swp
*.swo
*.pyc
.idea
*~
# Build artifacts
/build/
cmake-build-debug
debian/**/*.log
*critical.log
obj-x86_64-linux-gnu
examples/cgroupid/cgroupid
# Output from docker builds
scripts/docker/output/
/output/
# UAPI header generated for libbpf package-based builds
src/cc/compat/linux/bpf.h
================================================
FILE: .gitmodules
================================================
[submodule "src/cc/libbpf"]
path = src/cc/libbpf
url = https://github.com/libbpf/libbpf.git
[submodule "libbpf-tools/bpftool"]
path = libbpf-tools/bpftool
url = https://github.com/libbpf/bpftool
[submodule "libbpf-tools/blazesym"]
path = libbpf-tools/blazesym
url = https://github.com/libbpf/blazesym
================================================
FILE: .travis.yml
================================================
language: python
matrix:
include:
- name: "Check helpers on Python 2.7"
python: 2.7
script: ./scripts/check-helpers.sh
- name: "Python style check on Python 2.7"
python: 2.7
script: ./scripts/py-style-check.sh
- name: "flake8 lint on Python 2.7"
python: 2.7
script: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
- name: "flake8 lint on Python 3.7"
dist: xenial # required for Python >= 3.7
python: 3.7
script: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
allow_failures:
- name: "Check helpers on Python 2.7"
before_install: pip install --upgrade pip
install: pip install flake8
================================================
FILE: CMakeLists.txt
================================================
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
cmake_minimum_required(VERSION 3.12)
cmake_policy(SET CMP0074 NEW)
project(bcc)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
if(CMAKE_SANITIZE_TYPE)
add_compile_options(-fsanitize=${CMAKE_SANITIZE_TYPE})
add_link_options(-fsanitize=${CMAKE_SANITIZE_TYPE})
endif()
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "path to install" FORCE)
endif()
enable_testing()
execute_process(COMMAND git config --global --add safe.directory ${CMAKE_CURRENT_SOURCE_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE CONFIG_RESULT)
if(CONFIG_RESULT AND NOT CONFIG_RESULT EQUAL 0)
message(WARNING "Failed to add root source directory to safe.directory")
endif()
# populate submodule blazesym
if(NOT NO_BLAZESYM)
execute_process(COMMAND git config --global --add safe.directory ${CMAKE_CURRENT_SOURCE_DIR}/libbpf-tools/blazesym
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE CONFIG_RESULT)
if(CONFIG_RESULT AND NOT CONFIG_RESULT EQUAL 0)
message(WARNING "Failed to add blazesym source directory to safe.directory")
endif()
execute_process(COMMAND git submodule update --init --recursive -- libbpf-tools/blazesym
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE UPDATE_RESULT)
if(UPDATE_RESULT AND NOT UPDATE_RESULT EQUAL 0)
message(WARNING "Failed to update submodule blazesym")
endif()
endif()
# populate submodules (libbpf)
if(NOT CMAKE_USE_LIBBPF_PACKAGE)
execute_process(COMMAND git config --global --add safe.directory ${CMAKE_CURRENT_SOURCE_DIR}/src/cc/libbpf
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE CONFIG_RESULT)
if(CONFIG_RESULT AND NOT CONFIG_RESULT EQUAL 0)
message(WARNING "Failed to add libbpf source directory to safe.directory")
endif()
execute_process(COMMAND git config --global --add safe.directory ${CMAKE_CURRENT_SOURCE_DIR}/libbpf-tools/bpftool
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE CONFIG_RESULT)
if(CONFIG_RESULT AND NOT CONFIG_RESULT EQUAL 0)
message(WARNING "Failed to add bpftool source directory to safe.directory")
endif()
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/cc/libbpf/src)
execute_process(COMMAND git submodule update --init --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE UPDATE_RESULT)
if(UPDATE_RESULT AND NOT UPDATE_RESULT EQUAL 0)
message(WARNING "Failed to update submodule libbpf")
endif()
else()
execute_process(COMMAND git diff --shortstat ${CMAKE_CURRENT_SOURCE_DIR}/src/cc/libbpf/
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE DIFF_STATUS)
if("${DIFF_STATUS}" STREQUAL "")
execute_process(COMMAND git submodule update --init --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE UPDATE_RESULT)
if(UPDATE_RESULT AND NOT UPDATE_RESULT EQUAL 0)
message(WARNING "Failed to update submodule libbpf")
endif()
else()
message(WARNING "submodule libbpf dirty, so no sync")
endif()
endif()
endif()
# It's possible to use other kernel headers with
# KERNEL_INCLUDE_DIRS build variable, like:
# $ cd <kernel-dir>
# $ make INSTALL_HDR_PATH=/tmp/headers headers_install
# $ cd <bcc-dir>
# $ cmake -DKERNEL_INCLUDE_DIRS=/tmp/headers/include/ ...
include_directories(${KERNEL_INCLUDE_DIRS})
option(ENABLE_NO_PIE "Build bcc-lua without PIE" ON)
include(cmake/GetGitRevisionDescription.cmake)
include(cmake/version.cmake)
include(CMakeDependentOption)
include(GNUInstallDirs)
include(CheckCXXCompilerFlag)
include(cmake/FindCompilerFlag.cmake)
option(ENABLE_LLVM_NATIVECODEGEN "Enable use of llvm nativecodegen module (needed by rw-engine)" ON)
option(ENABLE_RTTI "Enable compiling with real time type information" OFF)
option(ENABLE_LLVM_SHARED "Enable linking LLVM as a shared library" OFF)
option(ENABLE_CLANG_JIT "Enable Loading BPF through Clang Frontend" ON)
option(ENABLE_USDT "Enable User-level Statically Defined Tracing" ON)
option(ENABLE_EXAMPLES "Build examples" ON)
option(ENABLE_MAN "Build man pages" ON)
option(ENABLE_TESTS "Build tests" ON)
option(RUN_LUA_TESTS "Run lua tests" ON)
option(ENABLE_LIBDEBUGINFOD "Use libdebuginfod as a source of debug symbols" ON)
CMAKE_DEPENDENT_OPTION(ENABLE_CPP_API "Enable C++ API" ON "ENABLE_USDT" OFF)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
if(ENABLE_TESTS)
find_package(KernelHeaders)
endif()
if(CMAKE_USE_LIBBPF_PACKAGE)
find_package(LibBpf)
endif()
if(NOT PYTHON_ONLY)
find_package(LLVM REQUIRED CONFIG)
message(STATUS "Found LLVM: ${LLVM_INCLUDE_DIRS} ${LLVM_PACKAGE_VERSION} (Use LLVM_ROOT envronment variable for another version of LLVM)")
if(ENABLE_CLANG_JIT)
find_package(BISON)
find_package(FLEX)
find_package(LibElf REQUIRED)
find_package(LibDebuginfod)
find_package(LibLzma)
if(CLANG_DIR)
set(CMAKE_FIND_ROOT_PATH "${CLANG_DIR}")
include_directories("${CLANG_DIR}/include")
endif()
# clang is linked as a library, but the library path searching is
# primitively supported, unlike libLLVM
set(CLANG_SEARCH "/opt/local/llvm/lib;${LLVM_LIBRARY_DIRS}")
find_library(libclangAnalysis NAMES clangAnalysis clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangAST NAMES clangAST clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangBasic NAMES clangBasic clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangCodeGen NAMES clangCodeGen clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangDriver NAMES clangDriver clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangEdit NAMES clangEdit clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangFrontend NAMES clangFrontend clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangLex NAMES clangLex clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangParse NAMES clangParse clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangRewrite NAMES clangRewrite clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangSema NAMES clangSema clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangSerialization NAMES clangSerialization clang-cpp HINTS ${CLANG_SEARCH})
find_library(libclangASTMatchers NAMES clangASTMatchers clang-cpp HINTS ${CLANG_SEARCH})
if(${LLVM_PACKAGE_VERSION} VERSION_EQUAL 15 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 15)
find_library(libclangSupport NAMES clangSupport clang-cpp HINTS ${CLANG_SEARCH})
endif()
if(${LLVM_PACKAGE_VERSION} VERSION_EQUAL 18 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 18)
find_library(libclangAPINotes NAMES clangAPINotes clang-cpp HINTS ${CLANG_SEARCH})
endif()
find_library(libclang-shared libclang-cpp.so HINTS ${CLANG_SEARCH})
if(libclangBasic STREQUAL "libclangBasic-NOTFOUND")
message(FATAL_ERROR "Unable to find clang libraries")
endif()
FOREACH(DIR ${LLVM_INCLUDE_DIRS})
include_directories("${DIR}/../tools/clang/include")
ENDFOREACH()
endif(ENABLE_CLANG_JIT)
# Set to a string path if system places kernel lib directory in
# non-default location.
if(NOT DEFINED BCC_KERNEL_MODULES_DIR)
set(BCC_KERNEL_MODULES_DIR "/lib/modules")
endif()
if(NOT DEFINED BCC_PROG_TAG_DIR)
set(BCC_PROG_TAG_DIR "/var/tmp/bcc")
endif()
# As reported in issue #735, GCC 6 has some behavioral problems when
# dealing with -isystem. Hence, skip the warning optimization
# altogether on that compiler.
option(USINGISYSTEM "using -isystem" ON)
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
if(USINGISYSTEM AND GCC_VERSION VERSION_LESS 6.0)
# iterate over all available directories in LLVM_INCLUDE_DIRS to
# generate a correctly tokenized list of parameters
foreach(ONE_LLVM_INCLUDE_DIR ${LLVM_INCLUDE_DIRS})
set(CXX_ISYSTEM_DIRS "${CXX_ISYSTEM_DIRS} -isystem ${ONE_LLVM_INCLUDE_DIR}")
endforeach()
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(${LLVM_PACKAGE_VERSION} VERSION_EQUAL 16 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 16)
set(CMAKE_CXX_STANDARD 17)
else()
set(CMAKE_CXX_STANDARD 14)
endif()
endif(NOT PYTHON_ONLY)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ${CXX_ISYSTEM_DIRS}")
add_subdirectory(src)
add_subdirectory(introspection)
if(ENABLE_CLANG_JIT)
if(ENABLE_EXAMPLES)
add_subdirectory(examples)
endif(ENABLE_EXAMPLES)
if(ENABLE_MAN)
add_subdirectory(man)
endif(ENABLE_MAN)
if(ENABLE_TESTS)
add_subdirectory(tests)
endif(ENABLE_TESTS)
add_subdirectory(tools)
endif(ENABLE_CLANG_JIT)
if(NOT TARGET uninstall)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/CmakeUninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/CmakeUninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/CmakeUninstall.cmake)
endif()
================================================
FILE: CODEOWNERS
================================================
# This file should be kept up to date with the list of maintainers responsible
# for the different subdirectories within BCC. One of these people SHOULD
# review code that touches the respective areas, and MUST review it if the
# change is substantial or API-breaking.
# see https://help.github.com/articles/about-codeowners/ for syntax
# Miscellaneous
* @chenhengqi @ekyooo @yonghong-song @brendangregg
# Documentation
/docs/ @chenhengqi @ekyooo @yonghong-song @brendangregg
/man/ @chenhengqi @ekyooo @yonghong-song @brendangregg
# Tools
/tools/ @chenhengqi @ekyooo @yonghong-song @brendangregg
# Compiler, C API
/src/cc/ @chenhengqi @ekyooo @yonghong-song @brendangregg
# Python API
/src/python/ @chenhengqi @ekyooo @yonghong-song @brendangregg
# Tests
/tests/ @chenhengqi @ekyooo @yonghong-song @brendangregg
================================================
FILE: CONTRIBUTING-SCRIPTS.md
================================================
# Contributing bcc/eBPF scripts
If you want to contribute scripts to bcc, or improve your own bcc programs, great! Please read this first.
_(Written by Brendan Gregg.)_
## Type of script
bcc has 2 types of scripts, in different directories:
- **/examples**: intended as short examples of bcc & eBPF code. You should focus on keeping it short, neat, and documented (code comments). A submission can just be the example code.
- **/tools**: intended as production safe performance and troubleshooting tools. You should focus on it being useful, tested, low overhead, documented (incl. all caveats), and easy to use. A submission should involve 4 changes: the tool, a man page, an example file, and an addition to README.md. Follow [my lead](https://github.com/brendangregg/bcc/commit/9fa156273b395cfc5505f0fff5d6b7b1396f7daa), and see the checklist below. These are run in mission critical environments as root (tech companies, financial institutions, government agencies), so if spending hours testing isn't for you, please submit your idea as an issue instead, or chat with us on irc.
More detail for each below.
## Examples
These are grouped into subdirectories (networking, tracing). Your example can either be a Python program with embedded C (eg, tracing/strlen_count.py), or separate Python and C files (eg, tracing/vfsreadlat.*).
As said earlier: keep it short, neat, and documented (code comments).
## Tools
A checklist for bcc tool development:
1. **Research the topic landscape**. Learn the existing tools and metrics (incl. from /proc). Determine what real world problems exist and need solving. We have too many tools and metrics as it is, we don't need more "I guess that's useful" tools, we need more "ah-hah! I couldn't do this before!" tools. Consider asking other developers about your idea. Many of us can be found in IRC, in the #iovisor channel on irc.oftc.net. There's also the mailing list (see the README.md), and github for issues.
1. **Create a known workload for testing**. This might involving writing a 10 line C program, using a micro-benchmark, or just improvising at the shell. If you don't know how to create a workload, learn! Figuring this out will provide invaluable context and details that you may have otherwise overlooked. Sometimes it's easy, and I'm able to just use dd(1) from /dev/urandom or a disk device to /dev/null. It lets me set the I/O size, count, and provides throughput statistics for cross-checking my tool output. But other times I need a micro-benchmark, or some C.
1. **Write the tool to solve the problem and no more**. Unix philosophy: do one thing and do it well. netstat doesn't have an option to dump packets, tcpdump-style. They are two different tools.
1. **Check your tool correctly measures your known workload**. If possible, run a prime number of events (eg, 23) and check that the numbers match. Try other workload variations.
1. **Use other observability tools to perform a cross-check or sanity check**. Eg, imagine you write a PCI bus tool that shows current throughput is 28 Gbytes/sec. How could you sanity test that? Well, what PCI devices are there? Disks and network cards? Measure their throughput (iostat, nicstat, sar), and check if is in the ballpark of 28 Gbytes/sec (which would include PCI frame overheads). Ideally, your numbers match.
1. **Measure the overhead of the tool**. If you are running a micro-benchmark, how much slower is it with the tool running. Is more CPU consumed? Try to determine the worst case: run the micro-benchmark so that CPU headroom is exhausted, and then run the bcc tool. Can overhead be lowered?
1. **Test again, and stress test**. You want to discover and fix all the bad things before others hit them.
1. **Consider command line options**. Should it have -p for filtering on a PID? -T for timestamps? -i for interval? See other tools for examples, and copy the style: the usage message should list example usage at the end. Remember to keep the tool doing one thing and doing it well. Also, if there's one option that seems to be the common case, perhaps it should just be the first argument and not need a switch (no -X). A special case of this is *stat tools, like iostat/vmstat/etc, where the convention is [interval [count]].
1. **Concise, intuitive, self-explanatory output**. The default output should meet the common need concisely. Leave much less useful fields and data to be shown with options: -v for verbose, etc. Consider including a startup message that's self-explanatory, eg "Tracing block I/O. Output every 1 seconds. Ctrl-C to end.".
1. **Default output <80 chars wide**. Try hard to keep the output less than 80 characters wide, especially the default output of the tool. That way, the output not only fits on the smallest reasonable terminal, it also fits well in slide decks, blog posts, articles, and printed material, all of which help education and adoption. Publishers of technical books often have templates they require books to conform to: it may not be an option to shrink or narrow the font to fit your output.
1. **Short tool name**. Follow the style of the other tools, which follow the style of other /usr/bin utilities. They are short and easy to type. No underscores.
1. **Use pep8 to check Python style**: pep8 --show-source --ignore=E123,E125,E126,E127,E128,E302 filename . Note that it misses some things, like consistent usage, so you'll still need to double check your script.
1. **Make sure your script is Python3-ready**: Adding `from __future__ import absolute_import, division, print_function, unicode_literals` helps make your script Python3-ready.
1. **Write an _example.txt file**. Copy the style in tools/biolatency_example.txt: start with an intro sentence, then have examples, and finish with the USAGE message. Explain everything: the first example should explain what we are seeing, even if this seems obvious. For some people it won't be obvious. Also explain why we are running the tool: what problems it's solving. It can take a long time (hours) to come up with good examples, but it's worth it. These will get copied around (eg, presentations, articles).
1. **Read your example.txt file**. Does this sound too niche or convoluted? Are you spending too much time explaining caveats? These can be hints that perhaps you should fix your tool, or abandon it! Perhaps it better belongs as an /example, and not a tool. I've abandoned many tools at this stage.
1. **Write a man page**. Either ROFF (.8), markdown (.md), or plain text (.txt): so long as it documents the important sections, particularly columns (fields) and caveats. These go under man/man8. See the other examples. Include a section on overhead, and pull no punches. It's better for end users to know about high overhead beforehand, than to discover it the hard way. Also explain caveats. Don't assume those will be obvious to tool users.
1. **Read your man page**. For ROFF: nroff -man filename. Like before, this exercise is like saying something out loud. Does it sound too niche or convoluted? Again, hints that you might need to go back and fix things, or abandon it.
1. **Spell check your documentation**. Use a spell checker like aspell to check your document quality before committing.
1. **Add an entry to README.md**.
1. **Add a smoke test** to [test_tools_smoke.py](https://github.com/iovisor/bcc/blob/master/tests/python/test_tools_smoke.py), which serves as a basic check that your tool still works when we make changes to the core library.
1. If you made it this far, pull request!
================================================
FILE: FAQ.txt
================================================
Q: while running 'make test' I'm seeing:
'ImportError: No module named pyroute2'
A: Install pyroute2:
git clone https://github.com/svinota/pyroute2.git
cd pyroute2; sudo make install
Q: hello_world.py fails with:
OSError: libbcc.so: cannot open shared object file: No such file or directory
A: make sure to 'make install' and add the directory
where libbcc.so was installed into your LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$(dirname `find /usr -name libbcc.so`):$LD_LIBRARY_PATH
Q: hello_world.py fails with:
ImportError: No module named bcc
A: checkout "sudo make install" output to find out bpf package installation site,
add it to the PYTHONPATH env variable before running the program.
export PYTHONPATH=$(dirname `find /usr/lib -name bcc`):$PYTHONPATH
Q: hello_world.py still fails with:
bpf: Operation not permitted
Exception: Failed to load BPF program hello
A: sudo
Q: hello_world.py fails with
bpf: Failed to load program: Operation not permitted
despite running as root, and strace shows each `bpf()` system call failing with an EPERM.
A: The so-called Kernel lockdown might be the root cause. Try disabling it with the so-called
sysrq mechanism:
echo 1 > /proc/sys/kernel/sysrq
echo x > /proc/sysrq-trigger
Also see https://github.com/iovisor/bcc/issues/2525
If you have Secure Boot enabled you need to press Alt-PrintScr-x on the keyboard instead:
```
This sysrq operation is disabled from userspace.
sysrq: Disabling Secure Boot restrictions
Lifting lockdown
```
Q: How do I fulfill the Linux kernel version requirement?
A: You need to obtain a recent version of the Linux source code
(please look at the README for the exact version), enable the
configuration options listed in the README file, install the image,
modules and headers, update your bootloader and reboot into the new
kernel.
If you want to compile your own kernel, you can fetch the sources
from kernel.org or through your Linux distribution.
To install, you need all of the following:
make install
make modules_install
make headers_install INSTALL_HDR_PATH=/usr/local/
Q: hello_world.py fails with:
ImportError: No module named past.builtins
A: sudo pip install future
Q: Running one of the bcc tools produces an import error:
Traceback (most recent call last):
File "./execsnoop", line 20, in <module>
from bcc import BPF
ImportError: No module named bcc
A: Make sure the python bcc bindings package (python2-bcc) is installed.
================================================
FILE: INSTALL.md
================================================
# Installing BCC
* [Kernel Configuration](#kernel-configuration)
* [Packages](#packages)
- [Debian](#debian---binary)
- [Ubuntu](#ubuntu---binary)
- [Fedora](#fedora---binary)
- [Arch](#arch---binary)
- [Gentoo](#gentoo---portage)
- [openSUSE](#opensuse---binary)
- [RHEL](#rhel---binary)
- [Amazon Linux 1](#amazon-linux-1---binary)
- [Amazon Linux 2](#amazon-linux-2---binary)
- [Alpine](#alpine---binary)
- [WSL](#wslwindows-subsystem-for-linux---binary)
* [Source](#source)
- [libbpf Submodule](#libbpf-submodule)
- [Debian](#debian---source)
- [Ubuntu](#ubuntu---source)
- [Fedora](#fedora---source)
- [openSUSE](#opensuse---source)
- [Centos](#centos---source)
- [Amazon Linux 1](#amazon-linux-1---source)
- [Amazon Linux 2](#amazon-linux-2---source)
- [Alpine](#alpine---source)
- [Arch](#arch---source)
* [Older Instructions](#older-instructions)
## Kernel Configuration
In general, to use these features, a Linux kernel version 4.1 or newer is
required. In addition, the kernel should have been compiled with the following
flags set:
```
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
# [optional, for tc filters]
CONFIG_NET_CLS_BPF=m
# [optional, for tc actions]
CONFIG_NET_ACT_BPF=m
CONFIG_BPF_JIT=y
# [for Linux kernel versions 4.1 through 4.6]
CONFIG_HAVE_BPF_JIT=y
# [for Linux kernel versions 4.7 and later]
CONFIG_HAVE_EBPF_JIT=y
# [optional, for kprobes]
CONFIG_BPF_EVENTS=y
# Need kernel headers through /sys/kernel/kheaders.tar.xz
CONFIG_IKHEADERS=y
```
There are a few optional kernel flags needed for running bcc networking examples on vanilla kernel:
```
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_ACT_POLICE=m
CONFIG_NET_ACT_GACT=m
CONFIG_DUMMY=m
CONFIG_VXLAN=m
```
Kernel compile flags can usually be checked by looking at `/proc/config.gz` or
`/boot/config-<kernel-version>`.
# Packages
## Debian - Binary
`bcc` and its tools are available in the standard Debian main repository, from the source package [bpfcc](https://packages.debian.org/source/sid/bpfcc) under the names `bpfcc-tools`, `python3-bpfcc`, `libbpfcc` and `libbpfcc-dev`.
To install:
```bash
echo deb http://cloudfront.debian.net/debian sid main >> /etc/apt/sources.list
sudo apt-get install -y bpfcc-tools libbpfcc libbpfcc-dev linux-headers-$(uname -r)
```
## Ubuntu - Binary
Versions of bcc are available in the standard Ubuntu
Universe repository, as well in iovisor's PPA. The Ubuntu packages have slightly different names: where iovisor
packages use `bcc` in the name (e.g. `bcc-tools`), Ubuntu packages use `bpfcc` (e.g.
`bpfcc-tools`).
Currently, BCC packages for both the Ubuntu Universe, and the iovisor builds are outdated. This is a known and tracked in:
- [Universe - Ubuntu Launchpad](https://bugs.launchpad.net/ubuntu/+source/bpfcc/+bug/1848137)
- [iovisor - BCC GitHub Issues](https://github.com/iovisor/bcc/issues/2678)
Currently, [building from source](#ubuntu---source) is currently the only way to get up to date packaged version of bcc.
**Ubuntu Packages**
Source packages and the binary packages produced from them can be
found at [packages.ubuntu.com](https://packages.ubuntu.com/search?suite=default§ion=all&arch=any&keywords=bpfcc&searchon=sourcenames).
```bash
sudo apt-get install bpfcc-tools linux-headers-$(uname -r)
```
The tools are installed in `/sbin` (`/usr/sbin` in Ubuntu 18.04) with a `-bpfcc` extension. Try running `sudo opensnoop-bpfcc`.
**_Note_**: the Ubuntu packages have different names but the package contents, in most cases, conflict
and as such _cannot_ be installed alongside upstream packages. Should one choose to use
Ubuntu's packages instead of the upstream iovisor packages (or vice-versa), the
conflicting packages will need to be removed.
The iovisor packages _do_ declare they provide the Ubuntu packages and as such may be
used to satisfy dependencies. For example, should one attempt to install package `foo`
which declares a dependency on `libbpfcc` while the upstream `libbcc` package is installed,
`foo` should install without trouble as `libbcc` declares that it provides `libbpfcc`.
That said, one should always test such a configuration in case of version incompatibilities.
**iovisor packages (Upstream Stable and Signed Packages)**
```bash
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD
echo "deb https://repo.iovisor.org/apt/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/iovisor.list
sudo apt-get update
sudo apt-get install bcc-tools libbcc-examples linux-headers-$(uname -r)
```
Tools will be installed under /usr/share/bcc/tools.
**Upstream Nightly Packages**
```bash
echo "deb [trusted=yes] https://repo.iovisor.org/apt/xenial xenial-nightly main" | sudo tee /etc/apt/sources.list.d/iovisor.list
sudo apt-get update
sudo apt-get install bcc-tools libbcc-examples linux-headers-$(uname -r)
```
(replace `xenial` with `artful` or `bionic` as appropriate)
## Fedora - Binary
### Fedora 30 and newer
As of Fedora 30, bcc binaries are available in the standard repository.
You can install them via
```bash
sudo dnf install bcc
```
**Note**: if you keep getting `Failed to load program: Operation not permitted` when
trying to run the `hello_world.py` example as root then you might need to lift
the so-called kernel lockdown (cf.
[FAQ](https://github.com/iovisor/bcc/blob/c00d10d4552f647491395e326d2e4400f3a0b6c5/FAQ.txt#L24),
[background article](https://gehrcke.de/2019/09/running-an-ebpf-program-may-require-lifting-the-kernel-lockdown)).
### Fedora 29 and older
Ensure that you are running a 4.2+ kernel with `uname -r`. If not, install a 4.2+ kernel from
http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug, for example:
```bash
sudo dnf config-manager --add-repo=http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug/fedora-rawhide-kernel-nodebug.repo
sudo dnf update
# reboot
```
**Nightly Packages**
Nightly bcc binary packages for Fedora 25, 26, 27, and 28 are hosted at
`https://repo.iovisor.org/yum/nightly/f{25,26,27}`.
To install:
```bash
echo -e '[iovisor]\nbaseurl=https://repo.iovisor.org/yum/nightly/f27/$basearch\nenabled=1\ngpgcheck=0' | sudo tee /etc/yum.repos.d/iovisor.repo
sudo dnf install bcc-tools kernel-headers kernel-devel
```
**Stable and Signed Packages**
Stable bcc binary packages for Fedora 25, 26, 27, and 28 are hosted at
`https://repo.iovisor.org/yum/main/f{25,26,27}`.
```bash
echo -e '[iovisor]\nbaseurl=https://repo.iovisor.org/yum/main/f27/$basearch\nenabled=1' | sudo tee /etc/yum.repos.d/iovisor.repo
sudo dnf install bcc-tools kernel-devel-$(uname -r) kernel-headers-$(uname -r)
```
## Arch - Binary
bcc is available in the standard Arch repos, so it can be installed with the `pacman` command:
```
# pacman -S bcc bcc-tools python-bcc
```
## Gentoo - Portage
First of all, upgrade the kernel of your choice to a recent version. For example:
```
emerge sys-kernel/gentoo-sources
```
Then, configure the kernel enabling the features you need. Please consider the following as a starting point:
```
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_NET_CLS_BPF=m
CONFIG_NET_ACT_BPF=m
CONFIG_BPF_JIT=y
CONFIG_BPF_EVENTS=y
```
Finally, you can install bcc with:
```
emerge dev-util/bcc
```
The appropriate dependencies (e.g., ```clang```, ```llvm``` with BPF backend) will be pulled automatically.
## openSUSE - Binary
For openSUSE Leap 42.2 (and later) and Tumbleweed, bcc is already included in the official repo. Just install
the packages with zypper.
```bash
sudo zypper ref
sudo zypper in bcc-tools bcc-examples
```
## RHEL - Binary
For RHEL 7.6, bcc is already included in the official yum repository as bcc-tools. As part of the install, the following dependencies are installed: bcc.x86_64 0:0.6.1-2.el7 ,llvm-private.x86_64 0:6.0.1-2.el7 ,python-bcc.x86_64 0:0.6.1-2.el7,python-netaddr.noarch 0:0.7.5-9.el7
```
yum install bcc-tools
```
## Amazon Linux 1 - Binary
Use case 1. Install BCC for latest kernel available in repo:
Tested on Amazon Linux AMI release 2018.03 (kernel 4.14.88-72.73.amzn1.x86_64)
```
sudo yum update kernel
sudo yum install bcc
sudo reboot
```
Use case 2. Install BCC for your AMI's default kernel (no reboot required):
Tested on Amazon Linux AMI release 2018.03 (kernel 4.14.77-70.59.amzn1.x86_64)
```
sudo yum install kernel-headers-$(uname -r | cut -d'.' -f1-5)
sudo yum install kernel-devel-$(uname -r | cut -d'.' -f1-5)
sudo yum install bcc
```
## Amazon Linux 2 - Binary
Use case 1. Install BCC for your AMI's default kernel (no reboot required):
Tested on Amazon Linux AMI release 2021.11 (kernel 5.10.75-79.358.amzn2.x86_64)
```
sudo amazon-linux-extras install BCC
```
## Alpine - Binary
As of Alpine 3.11, bcc binaries are available in the community repository:
```
sudo apk add bcc-tools bcc-doc
```
The tools are installed in `/usr/share/bcc/tools`.
**Python Compatibility**
The binary packages include bindings for Python 3 only. The Python-based tools assume that a `python` binary is available at `/usr/bin/python`, but that may not be true on recent versions of Alpine. If you encounter errors like `<tool-name>: not found`, you can try creating a symlink to the Python 3.x binary like so:
```
sudo ln -s $(which python3) /usr/bin/python
```
**Containers**
Alpine Linux is often used as a base system for containers. `bcc` can be used in such an environment by launching the container in privileged mode with kernel modules available through bind mounts:
```
sudo docker run --rm -it --privileged \
-v /lib/modules:/lib/modules:ro \
-v /sys:/sys:ro \
-v /usr/src:/usr/src:ro \
alpine:3.12
```
## WSL(Windows Subsystem for Linux) - Binary
### Install dependencies
The compiling depends on the headers and lib of linux kernel module which was not found in wsl distribution packages repo. We have to compile the kernel module manually.
```bash
apt-get install flex bison libssl-dev libelf-dev dwarves bc
```
### Install packages
First, you will need to checkout the WSL2 Linux kernel git repository:
```
KERNEL_VERSION=$(uname -r | cut -d '.' -f 1-2 | xargs -I {} echo "{}.y")
git clone --depth 1 https://github.com/microsoft/WSL2-Linux-Kernel.git -b linux-msft-wsl-$KERNEL_VERSION
cd WSL2-Linux-Kernel
```
Then compile and install:
```
cp Microsoft/config-wsl .config
make oldconfig && make prepare
make scripts
make modules
sudo make modules_install
````
After install the module you will need to change the name of the directory to remove the '+' at the end
````
mv /lib/modules/$KERNEL_VERSION-microsoft-standard-WSL2+/ /lib/modules/$KERNEL_VERSION-microsoft-standard-WSL2
````
Then you can install bcc tools package according your distribution.
If you met some problems, try to
```
sudo mount -t debugfs debugfs /sys/kernel/debug
```
# Source
## libbpf Submodule
Since release v0.10.0, bcc starts to leverage libbpf repo (https://github.com/libbpf/libbpf)
to provide wrapper functions to the kernel for bpf syscalls, uapi headers bpf.h/btf.h etc.
Unfortunately, the default github release source code does not contain libbpf submodule
source code and this will cause build issues.
To alleviate this problem, starting at release v0.11.0, source code with corresponding
libbpf submodule codes will be released as well. See https://github.com/iovisor/bcc/releases.
## Debian - Source
### sid
#### Repositories
`/etc/apt/sources.list` should include the `non-free` repository and look something like this:
```
deb http://deb.debian.org/debian sid main contrib non-free
deb-src http://deb.debian.org/debian sid main contrib non-free
```
#### Install Build Dependencies
```
# Before you begin
apt-get update
# According to https://packages.debian.org/source/sid/bpfcc,
# BCC build dependencies:
sudo apt-get install arping bison clang-format cmake dh-python \
dpkg-dev pkg-kde-tools ethtool flex inetutils-ping iperf \
libbpf-dev libclang-dev libclang-cpp-dev libedit-dev libelf-dev \
libfl-dev libzip-dev linux-libc-dev llvm-dev libluajit-5.1-dev \
luajit python3-netaddr python3-pyroute2 python3-setuptools python3 \
zip libpolly-19-dev
```
#### Install and compile BCC
```
git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake ..
make
sudo make install
```
## Ubuntu - Source
To build the toolchain from source, one needs:
* LLVM 3.7.1 or newer, compiled with BPF support (default=on)
* Clang, built from the same tree as LLVM
* cmake (>=3.1), gcc (>=4.7), flex, bison
* LuaJIT, if you want Lua support
* Optional tools used in some examples: arping, netperf, and iperf
### Install build dependencies
```
# For Focal (20.04.1 LTS)
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \
libllvm12 llvm-12-dev libclang-12-dev python zlib1g-dev libelf-dev libfl-dev python3-setuptools \
liblzma-dev arping netperf iperf
# For Hirsute (21.04) or Impish (21.10)
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \
libllvm12 llvm-12-dev libclang-12-dev python3 zlib1g-dev libelf-dev libfl-dev python3-setuptools \
liblzma-dev arping netperf iperf
# For Jammy (22.04)
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \
libllvm14 llvm-14-dev libclang-14-dev python3 zlib1g-dev libelf-dev libfl-dev python3-setuptools \
liblzma-dev libdebuginfod-dev arping netperf iperf
# For Lunar Lobster (23.04)
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \
libllvm15 llvm-15-dev libclang-15-dev python3 zlib1g-dev libelf-dev libfl-dev python3-setuptools \
liblzma-dev libdebuginfod-dev arping netperf iperf libpolly-15-dev
# For Mantic Minotaur (23.10)
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \
libllvm16 llvm-16-dev libclang-16-dev python3 zlib1g-dev libelf-dev libfl-dev python3-setuptools \
liblzma-dev libdebuginfod-dev arping netperf iperf libpolly-16-dev
# For Noble Numbat (24.04)
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \
libllvm18 llvm-18-dev libclang-18-dev python3 zlib1g-dev libelf-dev libfl-dev python3-setuptools \
liblzma-dev libdebuginfod-dev arping netperf iperf libpolly-18-dev
# For other versions
sudo apt-get -y install zip bison build-essential cmake flex git libedit-dev \
libllvm3.7 llvm-3.7-dev libclang-3.7-dev python zlib1g-dev libelf-dev python3-setuptools \
liblzma-dev arping netperf iperf
# For Lua support
sudo apt-get -y install luajit luajit-5.1-dev
```
### Install and compile BCC
```
git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake ..
make
sudo make install
cmake -DPYTHON_CMD=python3 .. # build python3 binding
pushd src/python/
make
sudo make install
popd
```
## CentOS-8.5 - Source
suppose you're running with root or add sudo first
### Install build dependencies
```
dnf install -y bison cmake ethtool flex git iperf3 libstdc++-devel python3-netaddr python3-pip gcc gcc-c++ make zlib-devel elfutils-libelf-devel
# dnf install -y luajit luajit-devel ## if use luajit, will report some lua function(which in lua5.3) undefined problem
dnf install -y clang clang-devel llvm llvm-devel llvm-static ncurses-devel
dnf -y install netperf
pip3 install pyroute2
ln -s /usr/bin/python3 /usr/bin/python
```
### Install and Compile bcc
```
git clone https://github.com/iovisor/bcc.git
mkdir bcc-build
cd bcc-build/
## here llvm should always link shared library
cmake ../bcc -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_LLVM_SHARED=1
make -j10
make install
```
after install, you may add bcc directory to your $PATH, which you can add to ~/.bashrc
```
bcctools=/usr/share/bcc/tools
bccexamples=/usr/share/bcc/examples
export PATH=$bcctools:$bccexamples:$PATH
```
### let path take effect
```
source ~/.bashrc
```
then run
```
hello_world.py
```
Or
```
cd /usr/share/bcc/examples
./hello_world.py
./tracing/bitehist.py
cd /usr/share/bcc/tools
./bitesize
```
## Fedora - Source
### Install build dependencies
```
sudo dnf install -y bison cmake ethtool flex git iperf libstdc++-static \
python-netaddr python-pip gcc gcc-c++ make zlib-devel \
elfutils-libelf-devel python-cachetools
sudo dnf install -y luajit luajit-devel # for Lua support
sudo dnf install -y \
http://repo.iovisor.org/yum/extra/mageia/cauldron/x86_64/netperf-2.7.0-1.mga6.x86_64.rpm
sudo pip install pyroute2
```
### Install binary clang
```
# FC22
wget http://llvm.org/releases/3.7.1/clang+llvm-3.7.1-x86_64-fedora22.tar.xz
sudo tar xf clang+llvm-3.7.1-x86_64-fedora22.tar.xz -C /usr/local --strip 1
# FC23
wget http://llvm.org/releases/3.9.0/clang+llvm-3.9.0-x86_64-fedora23.tar.xz
sudo tar xf clang+llvm-3.9.0-x86_64-fedora23.tar.xz -C /usr/local --strip 1
# FC24 and FC25
sudo dnf install -y clang clang-devel llvm llvm-devel llvm-static ncurses-devel
```
### Install and compile BCC
```
git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake ..
make
sudo make install
```
## openSUSE - Source
### Install build dependencies
```
sudo zypper in bison cmake flex gcc gcc-c++ git libelf-devel libstdc++-devel \
llvm-devel clang-devel pkg-config python-devel python-setuptools python3-devel \
python3-setuptools
sudo zypper in luajit-devel # for lua support in openSUSE Leap 42.2 or later
sudo zypper in lua51-luajit-devel # for lua support in openSUSE Tumbleweed
```
### Install and compile BCC
```
git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake -DLUAJIT_INCLUDE_DIR=`pkg-config --variable=includedir luajit` \ # for lua support
-DENABLE_LLVM_SHARED=1 ..
make
sudo make install
cmake -DPYTHON_CMD=python3 .. # build python3 binding
pushd src/python/
make
sudo make install
popd
```
## Centos - Source
For Centos 7.6 only
### Install build dependencies
```
sudo yum install -y epel-release
sudo yum update -y
sudo yum groupinstall -y "Development tools"
sudo yum install -y elfutils-libelf-devel cmake3 git bison flex ncurses-devel
sudo yum install -y luajit luajit-devel # for Lua support
```
### Install and compile LLVM
You could compile LLVM from source code
```
curl -LO https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/llvm-10.0.1.src.tar.xz
curl -LO https://github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/clang-10.0.1.src.tar.xz
tar -xf clang-10.0.1.src.tar.xz
tar -xf llvm-10.0.1.src.tar.xz
mkdir clang-build
mkdir llvm-build
cd llvm-build
cmake3 -G "Unix Makefiles" -DLLVM_TARGETS_TO_BUILD="BPF;X86" \
-DCMAKE_BUILD_TYPE=Release ../llvm-10.0.1.src
make
sudo make install
cd ../clang-build
cmake3 -G "Unix Makefiles" -DLLVM_TARGETS_TO_BUILD="BPF;X86" \
-DCMAKE_BUILD_TYPE=Release ../clang-10.0.1.src
make
sudo make install
cd ..
```
or install from centos-release-scl
```
yum install -y centos-release-scl
yum-config-manager --enable rhel-server-rhscl-7-rpms
yum install -y devtoolset-7 llvm-toolset-10 llvm-toolset-10-llvm-devel llvm-toolset-10-llvm-static llvm-toolset-10-clang-devel
source scl_source enable devtoolset-7 llvm-toolset-10
```
For permanently enable scl environment, please check https://access.redhat.com/solutions/527703.
### Install and compile BCC
```
git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake3 ..
make
sudo make install
```
## Amazon Linux 1 - Source
Tested on Amazon Linux AMI release 2018.03 (kernel 4.14.47-56.37.amzn1.x86_64)
### Install packages required for building
```
# enable epel to get iperf, luajit, luajit-devel, cmake3 (cmake3 is required to support c++11)
sudo yum-config-manager --enable epel
sudo yum install -y bison cmake3 ethtool flex git iperf libstdc++-static python-netaddr python-cachetools gcc gcc-c++ make zlib-devel elfutils-libelf-devel
sudo yum install -y luajit luajit-devel
sudo yum install -y http://repo.iovisor.org/yum/extra/mageia/cauldron/x86_64/netperf-2.7.0-1.mga6.x86_64.rpm
sudo pip install pyroute2
sudo yum install -y ncurses-devel
```
### Install clang 3.7.1 pre-built binaries
```
wget http://releases.llvm.org/3.7.1/clang+llvm-3.7.1-x86_64-fedora22.tar.xz
tar xf clang*
(cd clang* && sudo cp -R * /usr/local/)
```
### Build bcc
```
git clone https://github.com/iovisor/bcc.git
pushd .
mkdir bcc/build; cd bcc/build
cmake3 ..
time make
sudo make install
popd
```
### Setup required to run the tools
```
sudo yum -y install kernel-devel-$(uname -r)
sudo mount -t debugfs debugfs /sys/kernel/debug
```
### Test
```
sudo /usr/share/bcc/tools/execsnoop
```
## Amazon Linux 2 - Source
```
# enable epel to get iperf, luajit, luajit-devel, cmake3 (cmake3 is required to support c++11)
sudo yum-config-manager --enable epel
sudo yum install -y bison cmake3 ethtool flex git iperf libstdc++-static python-netaddr python-cachetools gcc gcc-c++ make zlib-devel elfutils-libelf-devel
sudo yum install -y luajit luajit-devel
sudo yum install -y http://repo.iovisor.org/yum/extra/mageia/cauldron/x86_64/netperf-2.7.0-1.mga6.x86_64.rpm
sudo pip install pyroute2
sudo yum install -y ncurses-devel
```
### Install clang
```
yum install -y clang llvm llvm-devel llvm-static clang-devel clang-libs
```
### Build bcc
```
git clone https://github.com/iovisor/bcc.git
pushd .
mkdir bcc/build; cd bcc/build
cmake3 ..
time make
sudo make install
popd
```
### Setup required to run the tools
```
sudo yum -y install kernel-devel-$(uname -r)
sudo mount -t debugfs debugfs /sys/kernel/debug
```
### Test
```
sudo /usr/share/bcc/tools/execsnoop
```
## Alpine - Source
### Install packages required for building
```
sudo apk add tar git build-base iperf linux-headers llvm10-dev llvm10-static \
clang-dev clang-static cmake python3 flex-dev bison luajit-dev elfutils-dev \
zlib-dev
```
### Build bcc
```
git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
# python2 can be substituted here, depending on your environment
cmake -DPYTHON_CMD=python3 ..
make && sudo make install
# Optional, but needed if you don't have /usr/bin/python on your system
ln -s $(which python3) /usr/bin/python
```
### Test
```
sudo /usr/share/bcc/tools/execsnoop
```
## Arch - Source
### Install dependencies
```
pacman -S cmake clang llvm flex bison python
```
### Build bcc
```
git clone https://github.com/iovisor/bcc.git
pushd .
mkdir bcc/build
cd bcc/build
cmake -DENABLE_LLVM_SHARED=on .. -DPYTHON_CMD=python3 # for python3 support
make -j$(nproc)
sudo make install
cd src/python
make -j$(nproc)
sudo make install
popd
```
# Older Instructions
## Build LLVM and Clang development libs
```
git clone https://github.com/llvm/llvm-project.git
mkdir -p llvm-project/llvm/build/install
cd llvm-project/llvm/build
cmake -G "Ninja" -DLLVM_TARGETS_TO_BUILD="BPF;X86" \
-DLLVM_ENABLE_PROJECTS="clang" \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install ..
ninja && ninja install
export PATH=$PWD/install/bin:$PATH
```
================================================
FILE: LICENSE.txt
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: LINKS.md
================================================
- 2019-12-06: [My learnings on Linux BPF container performance engineering](https://medium.com/@aimvec/my-learnings-on-linux-bpf-container-performance-engineering-3eb424b73d56)
- 2019-11-21: [Debugging network stalls on Kubernetes](https://github.blog/2019-11-21-debugging-network-stalls-on-kubernetes)
- 2019-11-12: [bcc-tools brings dynamic kernel tracing to Red Hat Enterprise Linux 8.1](https://www.redhat.com/en/blog/bcc-tools-brings-dynamic-kernel-tracing-red-hat-enterprise-linux-81)
- 2018-05-03: [Linux System Monitoring with eBPF](https://www.heinrichhartmann.com/pdf/Heinrich%20Hartmann%20-%20Linux%20System%20Monitoring%20with%20eBPF.pdf)
- 2018-02-22: [Some advanced BCC topics](https://lwn.net/Articles/747640)
- 2018-01-23: [BPFd: Running BCC tools remotely across systems and architectures](https://lwn.net/Articles/744522)
- 2017-12-22: [An introduction to the BPF Compiler Collection](https://lwn.net/Articles/742082)
- 2017-09-13: [Performance Analysis Superpowers with Linux BPF](https://www.slideshare.net/brendangregg/ossna-2017-performance-analysis-superpowers-with-linux-bpf)
- 2017-07-28: [Tracing a packet journey using Linux tracepoints, perf and eBPF](https://blog.yadutaf.fr/2017/07/28/tracing-a-packet-journey-using-linux-tracepoints-perf-ebpf/)
- 2017-07-13: [Performance Superpowers with Enhanced BPF](https://www.usenix.org/conference/atc17/program/presentation/gregg-superpowers)
- 2017-06-28: [The BSD Packet Filter](https://speakerdeck.com/tuxology/the-bsd-packet-filter)
- 2017-03-04: [Linux 4.x Tracing: Performance Analysis with bcc/BPF](https://www.slideshare.net/brendangregg/linux-4x-tracing-performance-analysis-with-bccbpf)
- 2017-02-05: [gobpf - utilizing eBPF from Go](https://fosdem.org/2017/schedule/event/go_bpf/attachments/slides/1681/export/events/attachments/go_bpf/slides/1681/gobpf_utilizing_eBPF_from_Go_FOSDEM_2017.pdf)
- 2017-01-31: [Golang bcc/BPF Function Tracing](http://www.brendangregg.com/blog/2017-01-31/golang-bcc-bpf-function-tracing.html)
- 2017-01-18: [BPF: Tracing and more](https://www.slideshare.net/brendangregg/bpf-tracing-and-more)
- 2016-12-09: [Linux 4.x Tracing Tools: Using BPF Superpowers](https://www.slideshare.net/brendangregg/linux-4x-tracing-tools-using-bpf-superpowers)
- 2016-11-30: [Introducing gobpf - Using eBPF from Go](https://kinvolk.io/blog/2016/11/ebpf-gobpf)
- 2016-11-30: [Linux bcc/BPF tcplife: TCP Lifespans](http://www.brendangregg.com/blog/2016-11-30/linux-bcc-tcplife.html)
- 2016-10-27: [DTrace for Linux 2016](http://www.brendangregg.com/blog/2016-10-27/dtrace-for-linux-2016.html)
- 2016-10-21: [Linux 4.9's Efficient BPF-based Profiler](http://www.brendangregg.com/blog/2016-10-21/linux-efficient-profiler.html)
- 2016-10-15: [Linux bcc tcptop](http://www.brendangregg.com/blog/2016-10-15/linux-bcc-tcptop.html)
- 2016-10-12: [Linux bcc/BPF Node.js USDT Tracing](http://www.brendangregg.com/blog/2016-10-12/linux-bcc-nodejs-usdt.html)
- 2016-10-08: [Linux bcc/BPF Run Queue (Scheduler) Latency](http://www.brendangregg.com/blog/2016-10-08/linux-bcc-runqlat.html)
- 2016-10-06: [Linux bcc ext4 Latency Tracing](http://www.brendangregg.com/blog/2016-10-06/linux-bcc-ext4dist-ext4slower.html)
- 2016-10-04: [Installing bcc to evaluate BPF and Postgres](https://www.gregburek.com/2016/10/04/installing-bcc-to-evaluate-bpf-and-postgres)
- 2016-10-04: [Linux MySQL Slow Query Tracing with bcc/BPF](http://www.brendangregg.com/blog/2016-10-04/linux-bcc-mysqld-qslower.html)
- 2016-10-01: [Linux bcc Tracing Security Capabilities](http://www.brendangregg.com/blog/2016-10-01/linux-bcc-security-capabilities.html)
- 2016-09-23: [BCC – Dynamic Tracing Tools for Linux Performance Monitoring, Networking and More](http://www.tecmint.com/bcc-best-linux-performance-monitoring-tools/)
- 2016-08-22: [BoF - What Can BPF Do For You?](https://events.static.linuxfound.org/sites/events/files/slides/iovisor-lc-bof-2016.pdf)
- 2016-07-03: [Linux debugging tools I love](https://jvns.ca/blog/2016/07/03/debugging-tools-i-love)
- 2016-06-14: [Ubuntu Xenial bcc/BPF](http://www.brendangregg.com/blog/2016-06-14/ubuntu-xenial-bcc-bpf.html)
- 2016-05-26: [Linux BPF/bcc for Oracle Tracing](https://db-blog.web.cern.ch/blog/luca-canali/2016-05-linux-bpfbcc-oracle-tracing)
- 2016-03-30: [How to turn any syscall into an event: Introducing eBPF Kernel probes](https://blog.yadutaf.fr/2016/03/30/turn-any-syscall-into-event-introducing-ebpf-kernel-probes)
- 2016-03-28: [Linux BPF/bcc Road Ahead, March 2016](http://www.brendangregg.com/blog/2016-03-28/linux-bpf-bcc-road-ahead-2016.html)
- 2016-03-05: [Linux BPF Superpowers](http://www.brendangregg.com/blog/2016-03-05/linux-bpf-superpowers.html)
- 2016-03-02: [Linux BPF Superpowers](https://www.slideshare.net/brendangregg/linux-bpf-superpowers)
- 2016-02-08: [Linux eBPF/bcc uprobes](http://www.brendangregg.com/blog/2016-02-08/linux-ebpf-bcc-uprobes.html)
- 2016-02-05: [Who is waking the waker? (Linux chain graph prototype)](http://www.brendangregg.com/blog/2016-02-05/ebpf-chaingraph-prototype.html)
- 2016-02-01: [Linux Wakeup and Off-Wake Profiling](http://www.brendangregg.com/blog/2016-02-01/linux-wakeup-offwake-profiling.html)
- 2016-01-20: [Linux eBPF Off-CPU Flame Graph](http://www.brendangregg.com/blog/2016-01-20/ebpf-offcpu-flame-graph.html)
- 2016-01-18: [Linux eBPF Stack Trace Hack](http://www.brendangregg.com/blog/2016-01-18/ebpf-stack-trace-hack.html)
- 2015-10-31: [tcpconnect and tcpaccept for Linux (bcc)](http://www.brendangregg.com/blog/2015-10-31/tcpconnect-tcpaccept-bcc.html)
- 2015-09-22: [bcc: Taming Linux 4.3+ Tracing Superpowers](http://www.brendangregg.com/blog/2015-09-22/bcc-linux-4.3-tracing.html)
================================================
FILE: QUICKSTART.md
================================================
# Quick Start Guide
A Docker container is provided for user to try out [bcc](https://github.com/iovisor/bcc).
From your host shell:
```bash
docker run -it --rm \
--privileged \
-v /lib/modules:/lib/modules:ro \
-v /usr/src:/usr/src:ro \
-v /etc/localtime:/etc/localtime:ro \
--workdir /usr/share/bcc/tools \
zlim/bcc
```
Now, from the container shell, you can try the various pre-installed bcc tools.
For examples, please refer to the [tutorial](docs/tutorial.md#1-general-performance).
If you wish to install bcc on your host, please refer to [INSTALL.md](INSTALL.md).
================================================
FILE: README.md
================================================

# BPF Compiler Collection (BCC)
BCC is a toolkit for creating efficient kernel tracing and manipulation
programs, and includes several useful tools and examples. It makes use of
extended BPF (Berkeley Packet Filters), formally known as eBPF, a new feature
that was first added to Linux 3.15. Much of what BCC uses requires Linux 4.1
and above.
eBPF was [described by](https://lkml.org/lkml/2015/4/14/232) Ingo Molnár as:
> One of the more interesting features in this cycle is the ability to attach eBPF programs (user-defined, sandboxed bytecode executed by the kernel) to kprobes. This allows user-defined instrumentation on a live kernel image that can never crash, hang or interfere with the kernel negatively.
BCC makes BPF programs easier to write, with kernel instrumentation in C
(and includes a C wrapper around LLVM), and front-ends in Python and lua.
It is suited for many tasks, including performance analysis and network
traffic control.
## Screenshot
This example traces a disk I/O kernel function, and populates an in-kernel
power-of-2 histogram of the I/O size. For efficiency, only the histogram
summary is returned to user-level.
```Shell
# ./bitehist.py
Tracing... Hit Ctrl-C to end.
^C
kbytes : count distribution
0 -> 1 : 3 | |
2 -> 3 : 0 | |
4 -> 7 : 211 |********** |
8 -> 15 : 0 | |
16 -> 31 : 0 | |
32 -> 63 : 0 | |
64 -> 127 : 1 | |
128 -> 255 : 800 |**************************************|
```
The above output shows a bimodal distribution, where the largest mode of
800 I/O was between 128 and 255 Kbytes in size.
See the source: [bitehist.py](examples/tracing/bitehist.py). What this traces,
what this stores, and how the data is presented, can be entirely customized.
This shows only some of many possible capabilities.
## Installing
See [INSTALL.md](INSTALL.md) for installation steps on your platform.
## FAQ
See [FAQ.txt](FAQ.txt) for the most common troubleshoot questions.
## Reference guide
See [docs/reference_guide.md](docs/reference_guide.md) for the reference guide to the bcc and bcc/BPF APIs.
## Contents
Some of these are single files that contain both C and Python, others have a
pair of .c and .py files, and some are directories of files.
### Tracing
#### Examples
- examples/tracing/[bitehist.py](examples/tracing/bitehist.py): Block I/O size histogram. [Examples](examples/tracing/bitehist_example.txt).
- examples/tracing/[disksnoop.py](examples/tracing/disksnoop.py): Trace block device I/O latency. [Examples](examples/tracing/disksnoop_example.txt).
- examples/[hello_world.py](examples/hello_world.py): Prints "Hello, World!" for new processes.
- examples/tracing/[mysqld_query.py](examples/tracing/mysqld_query.py): Trace MySQL server queries using USDT probes. [Examples](examples/tracing/mysqld_query_example.txt).
- examples/tracing/[nodejs_http_server.py](examples/tracing/nodejs_http_server.py): Trace Node.js HTTP server requests using USDT probes. [Examples](examples/tracing/nodejs_http_server_example.txt).
- examples/tracing/[stacksnoop](examples/tracing/stacksnoop.py): Trace a kernel function and print all kernel stack traces. [Examples](examples/tracing/stacksnoop_example.txt).
- tools/[statsnoop](tools/statsnoop.py): Trace stat() syscalls. [Examples](tools/statsnoop_example.txt).
- examples/tracing/[task_switch.py](examples/tracing/task_switch.py): Count task switches with from and to PIDs.
- examples/tracing/[tcpv4connect.py](examples/tracing/tcpv4connect.py): Trace TCP IPv4 active connections. [Examples](examples/tracing/tcpv4connect_example.txt).
- examples/tracing/[trace_fields.py](examples/tracing/trace_fields.py): Simple example of printing fields from traced events.
- examples/tracing/[undump.py](examples/tracing/undump.py): Dump UNIX socket packets. [Examples](examples/tracing/undump_example.txt)
- examples/tracing/[urandomread.py](examples/tracing/urandomread.py): A kernel tracepoint example, which traces random:urandom_read. [Examples](examples/tracing/urandomread_example.txt).
- examples/tracing/[vfsreadlat.py](examples/tracing/vfsreadlat.py) examples/tracing/[vfsreadlat.c](examples/tracing/vfsreadlat.c): VFS read latency distribution. [Examples](examples/tracing/vfsreadlat_example.txt).
- examples/tracing/[kvm_hypercall.py](examples/tracing/kvm_hypercall.py): Conditional static kernel tracepoints for KVM entry, exit and hypercall [Examples](examples/tracing/kvm_hypercall.txt).
#### Tools
<center><a href="images/bcc_tracing_tools_2019.png"><img src="images/bcc_tracing_tools_2019.png" border=0 width=700></a></center>
- tools/[argdist](tools/argdist.py): Display function parameter values as a histogram or frequency count. [Examples](tools/argdist_example.txt).
- tools/[bashreadline](tools/bashreadline.py): Print entered bash commands system wide. [Examples](tools/bashreadline_example.txt).
- tools/[bpflist](tools/bpflist.py): Display processes with active BPF programs and maps. [Examples](tools/bpflist_example.txt).
- tools/[capable](tools/capable.py): Trace security capability checks. [Examples](tools/capable_example.txt).
- tools/[compactsnoop](tools/compactsnoop.py): Trace compact zone events with PID and latency. [Examples](tools/compactsnoop_example.txt).
- tools/[criticalstat](tools/criticalstat.py): Trace and report long atomic critical sections in the kernel. [Examples](tools/criticalstat_example.txt)
- tools/[deadlock](tools/deadlock.py): Detect potential deadlocks on a running process. [Examples](tools/deadlock_example.txt).
- tools/[drsnoop](tools/drsnoop.py): Trace direct reclaim events with PID and latency. [Examples](tools/drsnoop_example.txt).
- tools/[funccount](tools/funccount.py): Count kernel function calls. [Examples](tools/funccount_example.txt).
- tools/[inject](tools/inject.py): Targeted error injection with call chain and predicates [Examples](tools/inject_example.txt).
- tools/[klockstat](tools/klockstat.py): Traces kernel mutex lock events and display locks statistics. [Examples](tools/klockstat_example.txt).
- tools/[opensnoop](tools/opensnoop.py): Trace open() syscalls. [Examples](tools/opensnoop_example.txt).
- tools/[readahead](tools/readahead.py): Show performance of read-ahead cache [Examples](tools/readahead_example.txt).
- tools/[reset-trace](tools/reset-trace.sh): Reset the state of tracing. Maintenance tool only. [Examples](tools/reset-trace_example.txt).
- tools/[stackcount](tools/stackcount.py): Count kernel function calls and their stack traces. [Examples](tools/stackcount_example.txt).
- tools/[syncsnoop](tools/syncsnoop.py): Trace sync() syscall. [Examples](tools/syncsnoop_example.txt).
- tools/[threadsnoop](tools/threadsnoop.py): List new thread creation. [Examples](tools/threadsnoop_example.txt).
- tools/[tplist](tools/tplist.py): Display kernel tracepoints or USDT probes and their formats. [Examples](tools/tplist_example.txt).
- tools/[trace](tools/trace.py): Trace arbitrary functions, with filters. [Examples](tools/trace_example.txt).
- tools/[ttysnoop](tools/ttysnoop.py): Watch live output from a tty or pts device. [Examples](tools/ttysnoop_example.txt).
- tools/[ucalls](tools/lib/ucalls.py): Summarize method calls or Linux syscalls in high-level languages. [Examples](tools/lib/ucalls_example.txt).
- tools/[uflow](tools/lib/uflow.py): Print a method flow graph in high-level languages. [Examples](tools/lib/uflow_example.txt).
- tools/[ugc](tools/lib/ugc.py): Trace garbage collection events in high-level languages. [Examples](tools/lib/ugc_example.txt).
- tools/[uobjnew](tools/lib/uobjnew.py): Summarize object allocation events by object type and number of bytes allocated. [Examples](tools/lib/uobjnew_example.txt).
- tools/[ustat](tools/lib/ustat.py): Collect events such as GCs, thread creations, object allocations, exceptions and more in high-level languages. [Examples](tools/lib/ustat_example.txt).
- tools/[uthreads](tools/lib/uthreads.py): Trace thread creation events in Java and raw pthreads. [Examples](tools/lib/uthreads_example.txt).
##### Memory and Process Tools
- tools/[execsnoop](tools/execsnoop.py): Trace new processes via exec() syscalls. [Examples](tools/execsnoop_example.txt).
- tools/[exitsnoop](tools/exitsnoop.py): Trace process termination (exit and fatal signals). [Examples](tools/exitsnoop_example.txt).
- tools/[killsnoop](tools/killsnoop.py): Trace signals issued by the kill() syscall. [Examples](tools/killsnoop_example.txt).
- tools/[kvmexit](tools/kvmexit.py): Display the exit_reason and its statistics of each vm exit. [Examples](tools/kvmexit_example.txt).
- tools/[memleak](tools/memleak.py): Display outstanding memory allocations to find memory leaks. [Examples](tools/memleak_example.txt).
- tools/[numasched](tools/numasched.py): Track the migration of processes between NUMAs. [Examples](tools/numasched_example.txt).
- tools/[oomkill](tools/oomkill.py): Trace the out-of-memory (OOM) killer. [Examples](tools/oomkill_example.txt).
- tools/[pidpersec](tools/pidpersec.py): Count new processes (via fork). [Examples](tools/pidpersec_example.txt).
- tools/[rdmaucma](tools/rdmaucma.py): Trace RDMA Userspace Connection Manager Access events. [Examples](tools/rdmaucma_example.txt).
- tools/[shmsnoop](tools/shmsnoop.py): Trace System V shared memory syscalls. [Examples](tools/shmsnoop_example.txt).
- tools/[slabratetop](tools/slabratetop.py): Kernel SLAB/SLUB memory cache allocation rate top. [Examples](tools/slabratetop_example.txt).
##### Performance and Time Tools
- tools/[dbslower](tools/dbslower.py): Trace MySQL/PostgreSQL queries slower than a threshold. [Examples](tools/dbslower_example.txt).
- tools/[dbstat](tools/dbstat.py): Summarize MySQL/PostgreSQL query latency as a histogram. [Examples](tools/dbstat_example.txt).
- tools/[funcinterval](tools/funcinterval.py): Time interval between the same function as a histogram. [Examples](tools/funcinterval_example.txt).
- tools/[funclatency](tools/funclatency.py): Time functions and show their latency distribution. [Examples](tools/funclatency_example.txt).
- tools/[funcslower](tools/funcslower.py): Trace slow kernel or user function calls. [Examples](tools/funcslower_example.txt).
- tools/[hardirqs](tools/hardirqs.py): Measure hard IRQ (hard interrupt) event time. [Examples](tools/hardirqs_example.txt).
- tools/[mysqld_qslower](tools/mysqld_qslower.py): Trace MySQL server queries slower than a threshold. [Examples](tools/mysqld_qslower_example.txt).
- tools/[ppchcalls](tools/ppchcalls.py): Summarize ppc hcall counts and latencies. [Examples](tools/ppchcalls_example.txt).
- tools/[softirqs](tools/softirqs.py): Measure soft IRQ (soft interrupt) event time. [Examples](tools/softirqs_example.txt).
- tools/[softirqslower](tools/softirqslower.py): Trace slow soft IRQ (interrupt). [Examples](tools/softirqslower_example.txt).
- tools/[syscount](tools/syscount.py): Summarize syscall counts and latencies. [Examples](tools/syscount_example.txt).
##### CPU and Scheduler Tools
- tools/[cpudist](tools/cpudist.py): Summarize on- and off-CPU time per task as a histogram. [Examples](tools/cpudist_example.txt)
- tools/[cpuunclaimed](tools/cpuunclaimed.py): Sample CPU run queues and calculate unclaimed idle CPU. [Examples](tools/cpuunclaimed_example.txt)
- tools/[llcstat](tools/llcstat.py): Summarize CPU cache references and misses by process. [Examples](tools/llcstat_example.txt).
- tools/[offcputime](tools/offcputime.py): Summarize off-CPU time by kernel stack trace. [Examples](tools/offcputime_example.txt).
- tools/[offwaketime](tools/offwaketime.py): Summarize blocked time by kernel off-CPU stack and waker stack. [Examples](tools/offwaketime_example.txt).
- tools/[profile](tools/profile.py): Profile CPU usage by sampling stack traces at a timed interval. [Examples](tools/profile_example.txt).
- tools/[runqlat](tools/runqlat.py): Run queue (scheduler) latency as a histogram. [Examples](tools/runqlat_example.txt).
- tools/[runqlen](tools/runqlen.py): Run queue length as a histogram. [Examples](tools/runqlen_example.txt).
- tools/[runqslower](tools/runqslower.py): Trace long process scheduling delays. [Examples](tools/runqslower_example.txt).
- tools/[wakeuptime](tools/wakeuptime.py): Summarize sleep to wakeup time by waker kernel stack. [Examples](tools/wakeuptime_example.txt).
- tools/[wqlat](tools/wqlat.py): Summarize work waiting latency on workqueue. [Examples](tools/wqlat_example.txt).
##### Network and Sockets Tools
- tools/[gethostlatency](tools/gethostlatency.py): Show latency for getaddrinfo/gethostbyname[2] calls. [Examples](tools/gethostlatency_example.txt).
- tools/[bindsnoop](tools/bindsnoop.py): Trace IPv4 and IPv6 bind() system calls (bind()). [Examples](tools/bindsnoop_example.txt).
- tools/[netqtop](tools/netqtop.py) tools/[netqtop.c](tools/netqtop.c): Trace and display packets distribution on NIC queues. [Examples](tools/netqtop_example.txt).
- tools/[sofdsnoop](tools/sofdsnoop.py): Trace FDs passed through unix sockets. [Examples](tools/sofdsnoop_example.txt).
- tools/[solisten](tools/solisten.py): Trace TCP socket listen. [Examples](tools/solisten_example.txt).
- tools/[sslsniff](tools/sslsniff.py): Sniff OpenSSL written and read data. [Examples](tools/sslsniff_example.txt).
- tools/[tcpaccept](tools/tcpaccept.py): Trace TCP passive connections (accept()). [Examples](tools/tcpaccept_example.txt).
- tools/[tcpconnect](tools/tcpconnect.py): Trace TCP active connections (connect()). [Examples](tools/tcpconnect_example.txt).
- tools/[tcpconnlat](tools/tcpconnlat.py): Trace TCP active connection latency (connect()). [Examples](tools/tcpconnlat_example.txt).
- tools/[tcpdrop](tools/tcpdrop.py): Trace kernel-based TCP packet drops with details. [Examples](tools/tcpdrop_example.txt).
- tools/[tcplife](tools/tcplife.py): Trace TCP sessions and summarize lifespan. [Examples](tools/tcplife_example.txt).
- tools/[tcpretrans](tools/tcpretrans.py): Trace TCP retransmits and TLPs. [Examples](tools/tcpretrans_example.txt).
- tools/[tcprtt](tools/tcprtt.py): Trace TCP round trip time. [Examples](tools/tcprtt_example.txt).
- tools/[tcpstates](tools/tcpstates.py): Trace TCP session state changes with durations. [Examples](tools/tcpstates_example.txt).
- tools/[tcpsubnet](tools/tcpsubnet.py): Summarize and aggregate TCP send by subnet. [Examples](tools/tcpsubnet_example.txt).
- tools/[tcpsynbl](tools/tcpsynbl.py): Show TCP SYN backlog. [Examples](tools/tcpsynbl_example.txt).
- tools/[tcptop](tools/tcptop.py): Summarize TCP send/recv throughput by host. Top for TCP. [Examples](tools/tcptop_example.txt).
- tools/[tcptracer](tools/tcptracer.py): Trace TCP established connections (connect(), accept(), close()). [Examples](tools/tcptracer_example.txt).
- tools/[tcpcong](tools/tcpcong.py): Trace TCP socket congestion control status duration. [Examples](tools/tcpcong_example.txt).
- tools/[mptcpify](tools/mptcpify.py): Force applications to use MPTCP instead of TCP. [Examples](tools/mptcpify_example.txt).
##### Storage and Filesystems Tools
- tools/[bitesize](tools/bitesize.py): Show per process I/O size histogram. [Examples](tools/bitesize_example.txt).
- tools/[cachestat](tools/cachestat.py): Trace page cache hit/miss ratio. [Examples](tools/cachestat_example.txt).
- tools/[cachetop](tools/cachetop.py): Trace page cache hit/miss ratio by processes. [Examples](tools/cachetop_example.txt).
- tools/[dcsnoop](tools/dcsnoop.py): Trace directory entry cache (dcache) lookups. [Examples](tools/dcsnoop_example.txt).
- tools/[dcstat](tools/dcstat.py): Directory entry cache (dcache) stats. [Examples](tools/dcstat_example.txt).
- tools/[biolatency](tools/biolatency.py): Summarize block device I/O latency as a histogram. [Examples](tools/biolatency_example.txt).
- tools/[biotop](tools/biotop.py): Top for disks: Summarize block device I/O by process. [Examples](tools/biotop_example.txt).
- tools/[biopattern](tools/biopattern.py): Identify random/sequential disk access patterns. [Examples](tools/biopattern_example.txt).
- tools/[biosnoop](tools/biosnoop.py): Trace block device I/O with PID and latency. [Examples](tools/biosnoop_example.txt).
- tools/[dirtop](tools/dirtop.py): File reads and writes by directory. Top for directories. [Examples](tools/dirtop_example.txt).
- tools/[filelife](tools/filelife.py): Trace the lifespan of short-lived files. [Examples](tools/filelife_example.txt).
- tools/[filegone](tools/filegone.py): Trace why file gone (deleted or renamed). [Examples](tools/filegone_example.txt).
- tools/[fileslower](tools/fileslower.py): Trace slow synchronous file reads and writes. [Examples](tools/fileslower_example.txt).
- tools/[filetop](tools/filetop.py): File reads and writes by filename and process. Top for files. [Examples](tools/filetop_example.txt).
- tools/[mdflush](tools/mdflush.py): Trace md flush events. [Examples](tools/mdflush_example.txt).
- tools/[mountsnoop](tools/mountsnoop.py): Trace mount and umount syscalls system-wide. [Examples](tools/mountsnoop_example.txt).
- tools/[virtiostat](tools/virtiostat.py): Show VIRTIO device IO statistics. [Examples](tools/virtiostat_example.txt).
###### Filesystems Tools
- tools/[btrfsdist](tools/btrfsdist.py): Summarize btrfs operation latency distribution as a histogram. [Examples](tools/btrfsdist_example.txt).
- tools/[btrfsslower](tools/btrfsslower.py): Trace slow btrfs operations. [Examples](tools/btrfsslower_example.txt).
- tools/[ext4dist](tools/ext4dist.py): Summarize ext4 operation latency distribution as a histogram. [Examples](tools/ext4dist_example.txt).
- tools/[ext4slower](tools/ext4slower.py): Trace slow ext4 operations. [Examples](tools/ext4slower_example.txt).
- tools/[nfsslower](tools/nfsslower.py): Trace slow NFS operations. [Examples](tools/nfsslower_example.txt).
- tools/[nfsdist](tools/nfsdist.py): Summarize NFS operation latency distribution as a histogram. [Examples](tools/nfsdist_example.txt).
- tools/[vfscount](tools/vfscount.py): Count VFS calls. [Examples](tools/vfscount_example.txt).
- tools/[vfsstat](tools/vfsstat.py): Count some VFS calls, with column output. [Examples](tools/vfsstat_example.txt).
- tools/[xfsdist](tools/xfsdist.py): Summarize XFS operation latency distribution as a histogram. [Examples](tools/xfsdist_example.txt).
- tools/[xfsslower](tools/xfsslower.py): Trace slow XFS operations. [Examples](tools/xfsslower_example.txt).
- tools/[zfsdist](tools/zfsdist.py): Summarize ZFS operation latency distribution as a histogram. [Examples](tools/zfsdist_example.txt).
- tools/[zfsslower](tools/zfsslower.py): Trace slow ZFS operations. [Examples](tools/zfsslower_example.txt).
### Networking
Examples:
- examples/networking/[distributed_bridge/](examples/networking/distributed_bridge): Distributed bridge example.
- examples/networking/[http_filter/](examples/networking/http_filter): Simple HTTP filter example.
- examples/networking/[simple_tc.py](examples/networking/simple_tc.py): Simple traffic control example.
- examples/networking/[simulation.py](examples/networking/simulation.py): Simulation helper.
- examples/networking/neighbor_sharing/[tc_neighbor_sharing.py](examples/networking/neighbor_sharing/tc_neighbor_sharing.py) examples/networking/neighbor_sharing/[tc_neighbor_sharing.c](examples/networking/neighbor_sharing/tc_neighbor_sharing.c): Per-IP classification and rate limiting.
- examples/networking/[tunnel_monitor/](examples/networking/tunnel_monitor): Efficiently monitor traffic flows.
- examples/networking/vlan_learning/[vlan_learning.py](examples/networking/vlan_learning/vlan_learning.py) examples/[vlan_learning.c](examples/networking/vlan_learning/vlan_learning.c): Demux Ethernet traffic into worker veth+namespaces.
### BPF Introspection
Tools that help to introspect BPF programs.
- introspection/[bps.c](introspection/bps.c): List all BPF programs loaded into the kernel. 'ps' for BPF programs. [Examples](introspection/bps_example.txt).
## Motivation
BPF guarantees that the programs loaded into the kernel cannot crash, and
cannot run forever, but yet BPF is general purpose enough to perform many
arbitrary types of computation. Currently, it is possible to write a program in
C that will compile into a valid BPF program, yet it is vastly easier to
write a C program that will compile into invalid BPF (C is like that). The user
won't know until trying to run the program whether it was valid or not.
With a BPF-specific frontend, one should be able to write in a language and
receive feedback from the compiler on the validity as it pertains to a BPF
backend. This toolkit aims to provide a frontend that can only create valid BPF
programs while still harnessing its full flexibility.
Furthermore, current integrations with BPF have a kludgy workflow, sometimes
involving compiling directly in a linux kernel source tree. This toolchain aims
to minimize the time that a developer spends getting BPF compiled, and instead
focus on the applications that can be written and the problems that can be
solved with BPF.
The features of this toolkit include:
* End-to-end BPF workflow in a shared library
* A modified C language for BPF backends
* Integration with llvm-bpf backend for JIT
* Dynamic (un)loading of JITed programs
* Support for BPF kernel hooks: socket filters, tc classifiers,
tc actions, and kprobes
* Bindings for Python
* Examples for socket filters, tc classifiers, and kprobes
* Self-contained tools for tracing a running system
In the future, more bindings besides python will likely be supported. Feel free
to add support for the language of your choice and send a pull request!
## Tutorials
- [docs/tutorial.md](docs/tutorial.md): Using bcc tools to solve performance, troubleshooting, and networking issues.
- [docs/tutorial_bcc_python_developer.md](docs/tutorial_bcc_python_developer.md): Developing new bcc programs using the Python interface.
### Networking
At Red Hat Summit 2015, BCC was presented as part of a [session on BPF](http://www.devnation.org/#7784f1f7513e8542e4db519e79ff5eec).
A multi-host vxlan environment is simulated and a BPF program used to monitor
one of the physical interfaces. The BPF program keeps statistics on the inner
and outer IP addresses traversing the interface, and the userspace component
turns those statistics into a graph showing the traffic distribution at
multiple granularities. See the code [here](examples/networking/tunnel_monitor).
## Contributing
Already pumped up to commit some code? Here are some resources to join the
discussions in the [IOVisor](https://www.iovisor.org/) community and see
what you want to work on.
* _Mailing List:_ https://lists.iovisor.org/mailman/listinfo/iovisor-dev
* _IRC:_ #iovisor at irc.oftc.net
* _BCC Issue Tracker:_ [Github Issues](https://github.com/iovisor/bcc/issues)
* _A guide for contributing scripts:_ [CONTRIBUTING-SCRIPTS.md](CONTRIBUTING-SCRIPTS.md)
## External links
Looking for more information on BCC and how it's being used? You can find links to other BCC content on the web in [LINKS.md](LINKS.md).
================================================
FILE: SPECS/Dockerfile.fedora
================================================
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
FROM fedora:rawhide
MAINTAINER Brenden Blanco <bblanco@plumgrid.com>
RUN dnf -y install bison cmake flex gcc gcc-c++ git libxml2-devel make python2-devel rpm-build wget zlib-devel
WORKDIR /root
RUN wget http://llvm.org/releases/3.7.1/{cfe,llvm}-3.7.1.src.tar.xz
RUN tar -xf llvm-3.7.1.src.tar.xz && mkdir llvm-3.7.1.src/tools/clang && tar -xf cfe-3.7.1.src.tar.xz -C llvm-3.7.1.src/tools/clang --strip 1 && mkdir llvm-3.7.1.src/build
RUN cd llvm-3.7.1.src/build && cmake .. -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;BPF" -DCMAKE_INSTALL_PREFIX=/usr
RUN cd llvm-3.7.1.src/build && make -j8
COPY . bcc
WORKDIR /root/bcc
RUN PATH=/root/llvm-3.7.1.src/build/bin:$PATH ./scripts/build-rpm.sh
================================================
FILE: SPECS/bcc+clang.spec
================================================
%define debug_package %{nil}
%define _unpackaged_files_terminate_build 0
%define llvmver 7.0.1
Name: bcc
Version: @REVISION@
Release: @GIT_REV_COUNT@
Summary: BPF Compiler Collection (BCC)
Group: Development/Languages
License: ASL 2.0
URL: https://github.com/iovisor/bcc
Source0: https://github.com/iovisor/bcc/archive/v%{version}.tar.gz
Source1: http://llvm.org/releases/%{llvmver}/llvm-%{llvmver}.src.tar.xz
Source2: http://llvm.org/releases/%{llvmver}/cfe-%{llvmver}.src.tar.xz
BuildArch: x86_64
BuildRequires: bison, cmake >= 2.8.7, flex, gcc, gcc-c++, libxml2-devel, python3-devel, elfutils-libelf-devel-static
%description
Python bindings for BPF Compiler Collection (BCC). Control a BPF program from
userspace.
%prep
%setup -T -b 1 -n llvm-%{llvmver}.src
mkdir tools/clang
tar -xvvJf %{_sourcedir}/cfe-%{llvmver}.src.tar.xz -C tools/clang --strip 1
%setup -D -n bcc
%build
export LD_LIBRARY_PATH="%{_builddir}/usr/lib64"
export PATH="%{_builddir}/usr/bin":$PATH
# build llvm
pushd %{_builddir}/llvm-%{llvmver}.src
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86;BPF" -DCMAKE_INSTALL_PREFIX=/usr
make %{?_smp_mflags}
make install DESTDIR="%{_builddir}"
popd
mkdir build
pushd build
cmake .. -DREVISION_LAST=%{version} -DREVISION=%{version} -DCMAKE_INSTALL_PREFIX=/usr
make %{?_smp_mflags}
popd
%install
pushd build
make install/strip DESTDIR=%{buildroot}
%changelog
* Fri Jul 03 2015 Brenden Blanco <bblanco@plumgrid.com> - 0.1.1-2
- Initial RPM Release
%package -n libbcc
Summary: Shared Library for BPF Compiler Collection (BCC)
Requires: elfutils-libelf
%description -n libbcc
Shared Library for BPF Compiler Collection (BCC)
%package -n libbcc-examples
Summary: Examples for BPF Compiler Collection (BCC)
Requires: libbcc
%description -n libbcc-examples
Examples for BPF Compiler Collection (BCC)
%package -n python-bcc
Summary: Python bindings for BPF Compiler Collection (BCC)
Requires: libbcc
%description -n python-bcc
Python bindings for BPF Compiler Collection (BCC)
%package -n bcc-tools
Summary: Command line tools for BPF Compiler Collection (BCC)
Requires: python-bcc
%description -n bcc-tools
Command line tools for BPF Compiler Collection (BCC)
%files -n python-bcc
%{python_sitelib}/bcc*
%files -n libbcc
/usr/lib64/*
/usr/include/bcc/*
%files -n libbcc-examples
/usr/share/bcc/examples/*
%exclude /usr/share/bcc/examples/*.pyc
%exclude /usr/share/bcc/examples/*.pyo
%exclude /usr/share/bcc/examples/*/*.pyc
%exclude /usr/share/bcc/examples/*/*.pyo
%exclude /usr/share/bcc/examples/*/*/*.pyc
%exclude /usr/share/bcc/examples/*/*/*.pyo
%files -n bcc-tools
/usr/share/bcc/introspection/*
/usr/share/bcc/tools/*
/usr/share/bcc/man/*
================================================
FILE: SPECS/bcc.spec
================================================
%bcond_with local_clang_static
#lua jit not available for some architectures
%ifarch ppc64 aarch64 ppc64le
%{!?with_lua: %global with_lua 0}
%else
%{!?with_lua: %global with_lua 1}
%endif
# use --with shared to only link against libLLVM.so
%if 0%{?fedora} >= 28 || 0%{?rhel} > 7
%bcond_without llvm_shared
%else
%bcond_with llvm_shared
%endif
# Build with debuginfod support for Fedora >= 32
%if 0%{?fedora} >= 32
%bcond_without libdebuginfod
%else
%bcond_with libdebuginfod
%endif
%global __python3
%global python_bcc
%global python_cmds,python3
%define debug_package %{nil}
%define _unpackaged_files_terminate_build 0
Name: bcc
Version: @REVISION@
Release: @GIT_REV_COUNT@
Summary: BPF Compiler Collection (BCC)
Group: Development/Languages
License: ASL 2.0
URL: https://github.com/iovisor/bcc
Source0: bcc.tar.gz
ExclusiveArch: x86_64 ppc64 aarch64 ppc64le
BuildRequires: bison cmake >= 2.8.7 flex make
BuildRequires: gcc gcc-c++ elfutils-libelf-devel-static
%if %{with libdebuginfod}
BuildRequires: elfutils-debuginfod-client-devel
%endif
BuildRequires: python3-devel
%if %{with_lua}
BuildRequires: luajit luajit-devel
%endif
%if %{without local_clang_static}
BuildRequires: llvm-devel
BuildRequires: clang-devel
%if %{without llvm_shared}
BuildRequires: llvm-static
%endif
%endif
BuildRequires: pkgconfig ncurses-devel
%description
Python bindings for BPF Compiler Collection (BCC). Control a BPF program from
userspace.
%if %{with_lua}
%global lua_include `pkg-config --variable=includedir luajit`
%global lua_libs `pkg-config --variable=libdir luajit`/lib`pkg-config --variable=libname luajit`.so
%global lua_config -DLUAJIT_INCLUDE_DIR=%{lua_include} -DLUAJIT_LIBRARIES=%{lua_libs}
%endif
%prep
%setup -q -n bcc
%build
mkdir build
pushd build
cmake .. -DREVISION_LAST=%{version} -DREVISION=%{version} \
-DCMAKE_INSTALL_PREFIX=/usr \
%{?lua_config} \
-DPYTHON_CMD="%{python_cmds}" \
%{?with_llvm_shared:-DENABLE_LLVM_SHARED=1}
make %{?_smp_mflags}
popd
%install
pushd build
make install/strip DESTDIR=%{buildroot}
# mangle shebangs
find %{buildroot}/usr/share/bcc/{tools,examples} -type f -exec \
sed -i -e '1 s|^#!/usr/bin/python$|#!'%{__python}'|' \
-e '1 s|^#!/usr/bin/env python$|#!'%{__python}'|' {} \;
%package -n libbcc
Summary: Shared Library for BPF Compiler Collection (BCC)
Requires: elfutils-libelf
%if %{with libdebuginfod}
Requires: elfutils-debuginfod-client
%endif
%description -n libbcc
Shared Library for BPF Compiler Collection (BCC)
%package -n python-bcc
Summary: Python3 bindings for BPF Compiler Collection (BCC)
Requires: libbcc = %{version}-%{release}
%{?python_provide:%python_provide python-bcc}
%description -n python-bcc
Python bindings for BPF Compiler Collection (BCC)
%if %{with_lua}
%package -n bcc-lua
Summary: Standalone tool to run BCC tracers written in Lua
Requires: libbcc = %{version}-%{release}
%description -n bcc-lua
Standalone tool to run BCC tracers written in Lua
%endif
%package -n libbcc-examples
Summary: Examples for BPF Compiler Collection (BCC)
Requires: %{python_bcc} = %{version}-%{release}
%if %{with_lua}
Requires: bcc-lua = %{version}-%{release}
%endif
%description -n libbcc-examples
Examples for BPF Compiler Collection (BCC)
%package -n bcc-tools
Summary: Command line tools for BPF Compiler Collection (BCC)
Requires: %{python_bcc} = %{version}-%{release}
%description -n bcc-tools
Command line tools for BPF Compiler Collection (BCC)
%files -n libbcc
/usr/lib64/*
/usr/include/bcc/*
%files -n python-bcc
%{python3_sitelib}/bcc*
%if %{with_lua}
%files -n bcc-lua
/usr/bin/bcc-lua
%endif
%files -n libbcc-examples
/usr/share/bcc/examples/*
%exclude /usr/share/bcc/examples/*.pyc
%exclude /usr/share/bcc/examples/*.pyo
%exclude /usr/share/bcc/examples/*/*.pyc
%exclude /usr/share/bcc/examples/*/*.pyo
%exclude /usr/share/bcc/examples/*/*/*.pyc
%exclude /usr/share/bcc/examples/*/*/*.pyo
%files -n bcc-tools
/usr/share/bcc/introspection/*
/usr/share/bcc/tools/*
/usr/share/bcc/man/*
%post -n libbcc -p /sbin/ldconfig
%postun -n libbcc -p /sbin/ldconfig
%changelog
* Wed Jul 18 2018 Brenden Blanco <bblanco@gmail.com> - 0.6.0-1
- Make python3 the default when possible
- Add with llvm_shared conditional
- Add python2/python3 package targets
* Mon Nov 21 2016 William Cohen <wcohen@redhat.com> - 0.2.0-1
- Revise bcc.spec to address rpmlint issues and build properly in Fedora koji.
* Mon Apr 04 2016 Vicent Marti <vicent@github.com> - 0.1.4-1
- Add bcc-lua package
* Sun Nov 29 2015 Brenden Blanco <bblanco@plumgrid.com> - 0.1.3-1
- Add bcc-tools package
* Mon Oct 12 2015 Brenden Blanco <bblanco@plumgrid.com> - 0.1.2-1
- Add better version numbering into libbcc.so
* Fri Jul 03 2015 Brenden Blanco <bblanco@plumgrid.com> - 0.1.1-2
- Initial RPM Release
================================================
FILE: cmake/CmakeUninstall.cmake.in
================================================
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2022 Rong Tao
#
function(UninstallManifest manifest)
if(NOT EXISTS "${manifest}")
message(FATAL_ERROR "Cannot find install manifest: ${manifest}")
endif()
file(READ "${manifest}" files)
string(REGEX REPLACE "\n" ";" files "${files}")
foreach(file ${files})
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
execute_process(
COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}"
OUTPUT_VARIABLE rm_out
RESULT_VARIABLE rm_retval
)
if(NOT "${rm_retval}" STREQUAL 0)
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
endif()
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
endif()
endforeach()
endfunction()
UninstallManifest("@CMAKE_BINARY_DIR@/install_manifest.txt")
UninstallManifest("@CMAKE_BINARY_DIR@/install_manifest_python_bcc.txt")
================================================
FILE: cmake/FindCompilerFlag.cmake
================================================
# Copyright (c) 2017 Facebook, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
if (ENABLE_NO_PIE)
set(_backup_c_flags "${CMAKE_REQUIRED_FLAGS}")
set(CMAKE_REQUIRED_FLAGS "-no-pie")
CHECK_CXX_SOURCE_COMPILES("int main() {return 0;}"
HAVE_NO_PIE_FLAG)
if (HAVE_NO_PIE_FLAG)
set(COMPILER_NOPIE_FLAG "-no-pie")
else()
set(COMPILER_NOPIE_FLAG "")
endif()
set(CMAKE_REQUIRED_FLAGS "${_backup_c_flags}")
endif(ENABLE_NO_PIE)
# check whether reallocarray availability
# this is used to satisfy reallocarray usage under src/cc/libbpf/
CHECK_CXX_SOURCE_COMPILES(
"
#define _GNU_SOURCE
#include <stdlib.h>
int main(void)
{
return !!reallocarray(NULL, 1, 1);
}
" HAVE_REALLOCARRAY_SUPPORT)
================================================
FILE: cmake/FindKernelHeaders.cmake
================================================
# Find the kernel headers for the running kernel release
# This is used to find a "linux/version.h" matching the running kernel.
execute_process(
COMMAND uname -r
OUTPUT_VARIABLE KERNEL_RELEASE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Find the headers
find_path(KERNELHEADERS_DIR
include/linux/user.h
PATHS
# RedHat derivatives
/usr/src/kernels/${KERNEL_RELEASE}
# Debian derivatives
/usr/src/linux-headers-${KERNEL_RELEASE}
)
message(STATUS "Kernel release: ${KERNEL_RELEASE}")
message(STATUS "Kernel headers: ${KERNELHEADERS_DIR}")
if (KERNELHEADERS_DIR)
set(KERNELHEADERS_INCLUDE_DIRS
${KERNELHEADERS_DIR}/include/generated/uapi
CACHE PATH "Kernel headers include dirs"
)
set(KERNELHEADERS_FOUND 1 CACHE STRING "Set to 1 if kernel headers were found")
include_directories(${KERNELHEADERS_INCLUDE_DIRS})
else (KERNELHEADERS_DIR)
set(KERNELHEADERS_FOUND 0 CACHE STRING "Set to 1 if kernel headers were found")
endif (KERNELHEADERS_DIR)
mark_as_advanced(KERNELHEADERS_FOUND)
================================================
FILE: cmake/FindLibBpf.cmake
================================================
# - Try to find libbpf
# Once done this will define
#
# LIBBPF_FOUND - system has libbpf
# LIBBPF_INCLUDE_DIR - the libbpf include directory
# LIBBPF_STATIC_LIBRARIES - the libbpf source directory
# LIBBPF_LIBRARIES - link these to use libbpf
#if (LIBBPF_LIBRARIES AND LIBBPF_INCLUDE_DIR AND LIBBPF_STATIC_LIBRARIES)
# set (LibBpf_FIND_QUIETLY TRUE)
#endif (LIBBPF_LIBRARIES AND LIBBPF_INCLUDE_DIR AND LIBBPF_STATIC_LIBRARIES)
# You'll need following packages to be installed (Fedora names):
# libbpf
# libbpf-static
# libbpf-devel
find_path (LIBBPF_INCLUDE_DIR
NAMES
bpf/bpf.h
bpf/btf.h
bpf/libbpf.h
PATHS
/usr/include
/usr/local/include
/opt/local/include
/sw/include
ENV CPATH)
find_library (LIBBPF_LIBRARIES
NAMES
bpf
PATHS
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
ENV LIBRARY_PATH
ENV LD_LIBRARY_PATH)
if(LIBBPF_LIBRARIES)
list(APPEND PATHS LIBBPF_LIBRARIES)
endif()
find_library (LIBBPF_STATIC_LIBRARIES
NAMES
libbpf.a
PATHS
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
ENV LIBRARY_PATH
ENV LD_LIBRARY_PATH)
if(LIBBPF_STATIC_LIBRARIES)
list(APPEND PATHS LIBBPF_STATIC_LIBRARIES)
endif()
if(LIBBPF_STATIC_LIBRARIES OR LIBBPF_LIBRARIES)
include (FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBBPF_FOUND to TRUE if all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibBpf "Please install the libbpf development package"
${PATHS}
LIBBPF_INCLUDE_DIR)
mark_as_advanced(LIBBPF_INCLUDE_DIR ${PATHS})
else()
message(Please install the libbpf development package)
endif()
================================================
FILE: cmake/FindLibDebuginfod.cmake
================================================
# - Try to find libdebuginfod
# Once done this will define
#
# LIBDEBUGINFOD_FOUND - system has libdebuginfod
# LIBDEBUGINFOD_INCLUDE_DIRS - the libdebuginfod include directory
# LIBDEBUGINFOD_LIBRARIES - Link these to use libdebuginfod
# LIBDEBUGINFOD_DEFINITIONS - Compiler switches required for using libdebuginfod
if (LIBDEBUGINFOD_LIBRARIES AND LIBDEBUGINFOD_INCLUDE_DIRS)
set (LibDebuginfod_FIND_QUIETLY TRUE)
endif (LIBDEBUGINFOD_LIBRARIES AND LIBDEBUGINFOD_INCLUDE_DIRS)
find_path (LIBDEBUGINFOD_INCLUDE_DIRS
NAMES
elfutils/debuginfod.h
PATHS
/usr/include
/usr/include/libelf
/usr/include/elfutils
/usr/local/include
/usr/local/include/libelf
/usr/local/include/elfutils
/opt/local/include
/opt/local/include/libelf
/opt/local/include/elfutils
/sw/include
/sw/include/libelf
/sw/include/elfutils
ENV CPATH)
find_library (LIBDEBUGINFOD_LIBRARIES
NAMES
debuginfod
PATHS
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
ENV LIBRARY_PATH
ENV LD_LIBRARY_PATH)
include (FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBDEBUGINFOD_FOUND to TRUE if all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibDebuginfod DEFAULT_MSG
LIBDEBUGINFOD_LIBRARIES
LIBDEBUGINFOD_INCLUDE_DIRS)
if (LIBDEBUGINFOD_FOUND AND ENABLE_LIBDEBUGINFOD)
add_definitions(-DHAVE_LIBDEBUGINFOD)
endif (LIBDEBUGINFOD_FOUND AND ENABLE_LIBDEBUGINFOD)
mark_as_advanced(LIBDEBUGINFOD_INCLUDE_DIRS LIBDEBUGINFOD_LIBRARIES)
================================================
FILE: cmake/FindLibElf.cmake
================================================
# - Try to find libelf
# Once done this will define
#
# LIBELF_FOUND - system has libelf
# LIBELF_INCLUDE_DIRS - the libelf include directory
# LIBELF_LIBRARIES - Link these to use libelf
# LIBELF_DEFINITIONS - Compiler switches required for using libelf
#
# Copyright (c) 2008 Bernhard Walle <bernhard.walle@gmx.de>
#
# Redistribution and use is allowed according to the terms of the New
# BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
if (LIBELF_LIBRARIES AND LIBELF_INCLUDE_DIRS)
set (LibElf_FIND_QUIETLY TRUE)
endif (LIBELF_LIBRARIES AND LIBELF_INCLUDE_DIRS)
find_path (LIBELF_INCLUDE_DIRS
NAMES
libelf.h
PATHS
/usr/include
/usr/include/libelf
/usr/local/include
/usr/local/include/libelf
/opt/local/include
/opt/local/include/libelf
/sw/include
/sw/include/libelf
ENV CPATH)
find_library (LIBELF_LIBRARIES
NAMES
elf
PATHS
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
ENV LIBRARY_PATH
ENV LD_LIBRARY_PATH)
include (FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBELF_FOUND to TRUE if all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibElf DEFAULT_MSG
LIBELF_LIBRARIES
LIBELF_INCLUDE_DIRS)
SET(CMAKE_REQUIRED_LIBRARIES elf)
INCLUDE(CheckCXXSourceCompiles)
CHECK_CXX_SOURCE_COMPILES("#include <libelf.h>
int main() {
Elf *e = (Elf*)0;
size_t sz;
elf_getshdrstrndx(e, &sz);
return 0;
}" ELF_GETSHDRSTRNDX)
mark_as_advanced(LIBELF_INCLUDE_DIRS LIBELF_LIBRARIES ELF_GETSHDRSTRNDX)
================================================
FILE: cmake/FindLibLzma.cmake
================================================
# - Try to find liblzma
# Once done this will define
#
# LIBLZMA_FOUND - system has liblzma
# LIBLZMA_INCLUDE_DIRS - the liblzma include directory
# LIBLZMA_LIBRARIES - Link these to use liblzma
if (LIBLZMA_LIBRARIES AND LIBLZMA_INCLUDE_DIRS)
set (LibLzma_FIND_QUIETLY TRUE)
endif (LIBLZMA_LIBRARIES AND LIBLZMA_INCLUDE_DIRS)
find_path (LIBLZMA_INCLUDE_DIRS
NAMES
lzma.h
PATHS
/usr/include
/usr/local/include
/opt/local/include
/sw/include
ENV CPATH)
find_library (LIBLZMA_LIBRARIES
NAMES
lzma
PATHS
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
ENV LIBRARY_PATH
ENV LD_LIBRARY_PATH)
include (FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBLZMA_FOUND to TRUE if all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibLzma DEFAULT_MSG
LIBLZMA_LIBRARIES
LIBLZMA_INCLUDE_DIRS)
if (LIBLZMA_FOUND)
add_definitions(-DHAVE_LIBLZMA)
endif (LIBLZMA_FOUND)
mark_as_advanced(LIBLZMA_INCLUDE_DIRS LIBLZMA_LIBRARIES)
================================================
FILE: cmake/FindLuaJIT.cmake
================================================
# Locate Lua library
# This module defines
# LUAJIT_FOUND, if false, do not try to link to Lua
# LUAJIT_LIBRARIES
# LUAJIT_INCLUDE_DIR, where to find lua.h
#
# Note that the expected include convention is
# #include "lua.h"
# and not
# #include <lua/lua.h>
# This is because, the lua location is not standardized and may exist
# in locations other than lua/
#=============================================================================
# Copyright 2007-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distributed this file outside of CMake, substitute the full
# License text for the above reference.)
#
# ################
# 2010 - modified for cronkite to find luajit instead of lua, as it was before.
#
FIND_PATH(LUAJIT_INCLUDE_DIR lua.h
HINTS
$ENV{LUAJIT_DIR}
PATH_SUFFIXES luajit-2.0 luajit2.0 luajit luajit-2.1
PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
)
FIND_LIBRARY(LUAJIT_LIBRARY
NAMES libluajit-51.a libluajit-5.1.a libluajit.a libluajit-5.1.so
HINTS
$ENV{LUAJIT_DIR}
PATH_SUFFIXES lib64 lib
PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw
/opt/local
/opt/csw
/opt
)
IF(LUAJIT_LIBRARY)
IF(UNIX AND NOT APPLE)
FIND_LIBRARY(LUAJIT_MATH_LIBRARY m)
FIND_LIBRARY(LUAJIT_DL_LIBRARY dl)
SET( LUAJIT_LIBRARIES "${LUAJIT_LIBRARY};${LUAJIT_DL_LIBRARY};${LUAJIT_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
ELSE(UNIX AND NOT APPLE)
SET( LUAJIT_LIBRARIES "${LUAJIT_LIBRARY}" CACHE STRING "Lua Libraries")
ENDIF(UNIX AND NOT APPLE)
ENDIF(LUAJIT_LIBRARY)
INCLUDE(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE if
# all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LuaJIT DEFAULT_MSG LUAJIT_LIBRARIES LUAJIT_INCLUDE_DIR)
MARK_AS_ADVANCED(LUAJIT_INCLUDE_DIR LUAJIT_LIBRARIES LUAJIT_LIBRARY LUAJIT_MATH_LIBRARY)
================================================
FILE: cmake/GetGitRevisionDescription.cmake
================================================
# - Returns a version string from Git
#
# These functions force a re-configure on each git commit so that you can
# trust the values of the variables in your build system.
#
# get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
#
# Returns the refspec and sha hash of the current head revision
#
# git_describe(<var> [<additional arguments to git describe> ...])
#
# Returns the results of git describe on the source tree, and adjusting
# the output so that it tests false if an error occurs.
#
# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
#
# Returns the results of git describe --exact-match on the source tree,
# and adjusting the output so that it tests false if there was no exact
# matching tag.
#
# Requires CMake 2.6 or newer (uses the 'function' command)
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
if(__get_git_revision_description)
return()
endif()
set(__get_git_revision_description YES)
# We must run the following at "include" time, not at function call time,
# to find the path to this module rather than the path to a calling list file
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
function(get_git_head_revision _refspecvar _hashvar)
set(GIT_PARENT_DIR "${CMAKE_SOURCE_DIR}")
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories
set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
# We have reached the root directory, we are not in git
set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
return()
endif()
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
endwhile()
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
if(NOT EXISTS "${GIT_DATA}")
file(MAKE_DIRECTORY "${GIT_DATA}")
endif()
if(NOT EXISTS "${GIT_DIR}/HEAD")
return()
endif()
set(HEAD_FILE "${GIT_DATA}/HEAD")
configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
"${GIT_DATA}/grabRef.cmake"
@ONLY)
include("${GIT_DATA}/grabRef.cmake")
set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
endfunction()
function(git_describe _var)
if(NOT GIT_FOUND)
find_package(Git QUIET)
endif()
get_git_head_revision(refspec hash)
if(NOT GIT_FOUND)
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
return()
endif()
if(NOT hash)
set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
return()
endif()
# TODO sanitize
#if((${ARGN}" MATCHES "&&") OR
# (ARGN MATCHES "||") OR
# (ARGN MATCHES "\\;"))
# message("Please report the following error to the project!")
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
#endif()
#message(STATUS "Arguments to execute_process: ${ARGN}")
execute_process(COMMAND
"${GIT_EXECUTABLE}"
describe
${hash}
${ARGN}
WORKING_DIRECTORY
"${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE
res
OUTPUT_VARIABLE
out
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT res EQUAL 0)
set(out "${out}-${res}-NOTFOUND")
endif()
set(${_var} "${out}" PARENT_SCOPE)
endfunction()
function(git_get_exact_tag _var)
git_describe(out --exact-match ${ARGN})
set(${_var} "${out}" PARENT_SCOPE)
endfunction()
================================================
FILE: cmake/GetGitRevisionDescription.cmake.in
================================================
#
# Internal file for GetGitRevisionDescription.cmake
#
# Requires CMake 2.6 or newer (uses the 'function' command)
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
set(HEAD_HASH)
file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
if(HEAD_CONTENTS MATCHES "ref")
# named branch
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
if(EXISTS "@GIT_DIR@/${HEAD_REF}")
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}")
configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
set(HEAD_HASH "${HEAD_REF}")
endif()
else()
# detached HEAD
configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
endif()
if(NOT HEAD_HASH)
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
string(STRIP "${HEAD_HASH}" HEAD_HASH)
endif()
================================================
FILE: cmake/bump_version.cmake
================================================
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
configure_file(SPECS/Dockerfile.el6.in SPECS/Dockerfile.el6 @ONLY)
configure_file(SPECS/Dockerfile.el7.in SPECS/Dockerfile.el7 @ONLY)
configure_file(SPECS/Dockerfile.f22.in SPECS/Dockerfile.f22 @ONLY)
configure_file(SPECS/bcc.el6.spec.in SPECS/bcc.el6.spec @ONLY)
configure_file(SPECS/bcc.el7.spec.in SPECS/bcc.el7.spec @ONLY)
configure_file(SPECS/bcc.f22.spec.in SPECS/bcc.f22.spec @ONLY)
configure_file(scripts/build-deb.sh.in scripts/build-deb.sh @ONLY)
================================================
FILE: cmake/clang_libs.cmake
================================================
if(ENABLE_LLVM_SHARED)
set(llvm_libs "LLVM")
else()
set(llvm_raw_libs bitwriter bpfcodegen debuginfodwarf irreader linker
mcjit objcarcopts option passes lto bpfasmparser bpfdisassembler)
if(ENABLE_LLVM_NATIVECODEGEN)
set(llvm_raw_libs ${llvm_raw_libs} nativecodegen)
endif()
list(FIND LLVM_AVAILABLE_LIBS "LLVMCoverage" _llvm_coverage)
if (${_llvm_coverage} GREATER -1)
list(APPEND llvm_raw_libs coverage)
endif()
list(FIND LLVM_AVAILABLE_LIBS "LLVMCoroutines" _llvm_coroutines)
if (${_llvm_coroutines} GREATER -1)
list(APPEND llvm_raw_libs coroutines)
endif()
list(FIND LLVM_AVAILABLE_LIBS "LLVMFrontendOpenMP" _llvm_frontendOpenMP)
if (${_llvm_frontendOpenMP} GREATER -1)
list(APPEND llvm_raw_libs frontendopenmp)
endif()
if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 15 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 15)
list(APPEND llvm_raw_libs windowsdriver)
endif()
if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 16 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 16)
list(APPEND llvm_raw_libs frontendhlsl)
endif()
if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 18 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 18)
list(APPEND llvm_raw_libs frontenddriver)
endif()
llvm_map_components_to_libnames(_llvm_libs ${llvm_raw_libs})
llvm_expand_dependencies(llvm_libs ${_llvm_libs})
endif()
if(ENABLE_LLVM_SHARED AND NOT libclang-shared STREQUAL "libclang-shared-NOTFOUND")
set(clang_libs ${libclang-shared})
else()
# order is important
set(clang_libs
${libclangFrontend}
${libclangSerialization}
${libclangDriver}
${libclangASTMatchers})
list(APPEND clang_libs
${libclangParse}
${libclangSema}
${libclangCodeGen}
${libclangAnalysis}
${libclangRewrite}
${libclangEdit}
${libclangAST}
${libclangLex})
# if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 15 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 15)
list(APPEND clang_libs ${libclangSupport})
# endif()
if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 18 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 18)
list(APPEND clang_libs ${libclangAPINotes})
endif()
list(APPEND clang_libs
${libclangBasic})
endif()
# prune unused llvm static library stuff when linking into the new .so
set(_exclude_flags)
foreach(_lib ${clang_libs})
get_filename_component(_lib ${_lib} NAME)
set(_exclude_flags "${_exclude_flags} -Wl,--exclude-libs=${_lib}")
endforeach(_lib)
set(clang_lib_exclude_flags "${_exclude_flags}")
set(_exclude_flags)
foreach(_lib ${llvm_libs})
get_filename_component(_lib ${_lib} NAME)
set(_exclude_flags "${_exclude_flags} -Wl,--exclude-libs=lib${_lib}.a")
endforeach(_lib)
set(llvm_lib_exclude_flags "${_exclude_flags}")
================================================
FILE: cmake/static_libstdc++.cmake
================================================
# only turn on static-libstdc++ if also linking statically against clang
string(REGEX MATCH ".*[.]a$" LIBCLANG_ISSTATIC "${libclangBasic}")
# if gcc 4.9 or higher is used, static libstdc++ is a good option
if (CMAKE_COMPILER_IS_GNUCC AND LIBCLANG_ISSTATIC AND (NOT ENABLE_LLVM_SHARED OR libclang-shared STREQUAL "libclang-shared-NOTFOUND"))
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
if (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
execute_process(COMMAND ${CMAKE_C_COMPILER} -print-libgcc-file-name OUTPUT_VARIABLE GCC_LIB)
get_filename_component(GCC_DIR "${GCC_LIB}" DIRECTORY)
find_library(GCC_LIBSTDCPP libstdc++.a PATHS "${GCC_DIR}" NO_DEFAULT_PATH)
if (GCC_LIBSTDCPP)
message(STATUS "Using static-libstdc++")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++")
endif()
endif()
endif()
================================================
FILE: cmake/version.cmake
================================================
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
if(NOT REVISION)
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
string(SUBSTRING "${GIT_SHA1}" 0 8 GIT_SHA1_SHORT)
git_describe(GIT_DESCRIPTION)
git_describe(GIT_TAG_LAST "--abbrev=0" "--tags")
if(GIT_TAG_LAST MATCHES "-NOTFOUND")
set(REVISION "0.0.0+${GIT_SHA1_SHORT}")
message(STATUS "No valid Git tag found, using fallback 0.0.0+${GIT_SHA1_SHORT}")
else()
git_get_exact_tag(GIT_TAG_EXACT)
string(SUBSTRING "${GIT_TAG_LAST}+${GIT_SHA1_SHORT}" 1 -1 REVISION)
if(GIT_TAG_EXACT)
string(SUBSTRING "${GIT_TAG_EXACT}" 1 -1 REVISION)
message(STATUS "Currently on Git tag ${GIT_TAG_EXACT}")
else ()
message(STATUS "Latest recognized Git tag is ${GIT_TAG_LAST}")
set(GIT_TAG_EXACT "")
endif()
endif()
message(STATUS "Git HEAD is ${GIT_SHA1}")
# rpm/deb packaging uses this, only works on whole tag numbers
if(NOT REVISION_LAST)
string(SUBSTRING "${GIT_TAG_LAST}" 1 -1 REVISION_LAST)
endif()
else()
set(REVISION_LAST "${REVISION}")
endif()
if (REVISION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
set(REVISION_MAJOR ${CMAKE_MATCH_1})
set(REVISION_MINOR ${CMAKE_MATCH_2})
set(REVISION_PATCH ${CMAKE_MATCH_3})
else()
message(WARNING "Could not extract major/minor/patch from revision ${REVISION}" )
endif()
# strip leading 'v', and make unique for the tag
message(STATUS "Revision is ${REVISION} (major ${REVISION_MAJOR}, minor ${REVISION_MINOR}, patch ${REVISION_PATCH})")
================================================
FILE: debian/bcc-lua.install
================================================
usr/bin/bcc-lua
================================================
FILE: debian/bcc-tools.install
================================================
usr/share/bcc/introspection/*
usr/share/bcc/tools/*
usr/share/bcc/man/*
================================================
FILE: debian/changelog
================================================
bcc (0.36.1-1) unstable; urgency=low
* Bug Fixes
Sync BCC with libbpf submodule update (afb8b17) (#5455, #5460)
libbpf-tools: Sync blazesym submodule and migrate tools to new C API (#5458)
bcc (0.36.0-1) unstable; urgency=low
* Support for kernel up to 6.18
* New Tools
tools/softirqslower: New tool to trace slow software interrupt handlers (#5356)
* Enhanced Functionality
libbpf-tools/opensnoop: Added full-path support with `-F` option (#5323, #5333)
libbpf-tools/filelife: Added full-path support (#5347, ab8e0616)
libbpf-tools: Introduced path helpers (ab8e0616)
libbpf-tools/trace_helpers: Added str_loadavg() and str_timestamp() common functions (694de9f9)
libbpf-tools/filetop: Added directory filter capability (#5300)
libbpf-tools/runqslower: Added `-c` option to filter by process name prefix (673911cf)
libbpf-tools/runqlat: Dynamically size pid/pidns histogram map (#5342)
libbpf-tools/fsdist, fsslower: Added support for fuse filesystem (9691c568)
libbpf-tools/tcptop: Major refactoring using fentry/fexit for better performance (75bb73a5, e2c79176, d786eaa3, da3a4746)
tools/opensnoop: Added full-path support with `-F` option (#5334, #5339)
tools/kvmexit: Added AMD processor support and parallel post-processing (13a4e5a4, c2af2eea)
tools/offwaketime: Added raw tracepoint support to reduce overhead (380ee018)
Python uprobe API: Added functionality to detach all uprobes for a binary (#5325)
Python API: Added support for executing a program and tracing it (#5362)
* Bug Fixes
libbpf-tools/filelife: Fixed wrong full-path handling (#5347)
libbpf-tools/filelife: Fixed problem when using perf-buffer (ec8415b2)
libbpf-tools/funclatency: Delete the element from the `starts` map after it has been used (06ce1345)
libbpf-tools/offcputime: Fixed min/max_block_ns unit conversion error (#5327, d507a53e)
libbpf-tools/syncsnoop: Added support for sync_file_range2 and arm_sync_file_range() (42879217)
libbpf-tools/ksnoop: Fixed two invalid access to map value (#5361)
libbpf-tools/klockstat: Allows kprobe fallback to work with lock debugging (#5359)
libbpf-tools/biotop: Fixed segmentation fault with musl libc build (52d2d098)
libbpf-tools/syscall_helpers, Python BCC: Updated syscall list (add file_getattr/file_setattr) (b63d7e38, a9c6650e)
tools/tcpaccept: Fixed on recent kernels (c208d0e6)
tools/tcpconnect: Fixed iov field for DNS with Linux>=6.4 (#5382)
tools/javaobjnew: Use MIN macro instead of min function (fb8910a8)
tools/biolatency, biosnoop, biotop: Use TRACEPOINT_PROBE() for tracepoints (#5366)
Various tools: Don't use the old bpf_probe_read() helper (1cc15c3d)
CC: Support versioned SONAME in shared library resolution (beb1fe40, c3512104)
Python TCP: Added state2str() and applied to tools (bfa05d28)
s390 architecture: Prevent invalid mem access when reading PAGE_OFFSET (d8595ee3)
* Build & Test Fixes
Fixed build failure with clang21 (#5369)
Fixed build for LLVM 23 by avoiding deprecated TargetRegistry overloads (#5401)
ci: Make version.cmake handle shallow clone (2232b7eb)
ci: Various test fixes for proper CI operation (blk probes, rss_stat, kmalloc, btrfs/f2fs) (a4991816, c3385476, 6b7dd5de, ea5cf836)
tests: Added coverage for versioned SONAME resolution (c3512104)
Removed luajit options to ensure no errors (26eaf13b)
* Doc update, other bug fixes and tools improvement
bcc (0.35.0-1) unstable; urgency=low
* Support for kernel up to 6.14
* New bcc tools: mptcp: enable mptcp for tcp traffic
* tools/biosnoop: Fix biosnoop pattern option
* Allow cmake run out of the source tree
* Fix for test bpf_stack_id when running on custom image in yocto
* libbpf-tools/map_helpers: Add bpf_map_lookup_and_delete_batch to dump_hash
* libbpf-tools/biotop: Use dump_hash for map processing
* uninstall: use execute_process() instead of exec_program()
* clang: Fix pointer dereference on big-endian machines
* ci: Upgrade to ubuntu 24.04
* doc update, other bug fixes and example improvement.
bcc (0.34.0-1) unstable; urgency=low
* Support for kernel up to 6.13
* Bump cmake minimum version to 3.12
* statsnoop: Display syscall name with -s
* readahead: Fix incorrect page accessed count since kernel 5.16
* libbpf-tools/opensnoop: Add new fields
* libbpf-tools: hardirqs/softirqs: Fix logarithmic calculation issue
* libbpf-tools/hardirqs: have better default display and add CPU column
* libbpf-tools/klockstat: Better stack dump and summary info
* libbpf-tools/sigsnoop: Support real-time signals and thread comm
* libbpf-tools/statsnoop: Support more syscalls
* libbpf-tools/memleak: Some fixes and better messages
* tools/opensnoop: Add new fields and fix bad mode value
* tools/profile: Prioritize using the cpu-cycles hardware event
* tools/tcpdrop: Add support for dumping TCP drop reasons
* Fix event name too long error in python source
* doc update, other bug fixes and example improvement.
bcc (0.33.0-1) unstable; urgency=low
* Support for kernel up to 6.12
* Add new bcc tool numasched
* syms: Initialize ModulePath::fd_ to invalid FD
* libbpf-tools/memleak: Fix off-by-one error
* libbpf-tools/slabratetop: Fix failed to create kprobe error
* libbpf_tools/profile: Support PID namespace mapping
* libbpf-tools/mountsnoop: Support fsopen,fsconfig,fsmount,move_mount syscalls
* tools/oomkill: get application level stack trace
* tools/profile: Add additional information to backtrace
* tools/mountsnoop: Fix fsmount printing wrong flags
* tools/compactsnoop: Add aarch64 support
* doc update, other bug fixes and tools improvement.
bcc (0.32.0-1) unstable; urgency=low
* Support for kernel up to 6.11.
* bcc tool update: wakeuptime, readahead, shmsnoop, offcputime, cachestat, cachetop, hardirqs
* libbpf tool update: futexctn, profile, readhead, softirqs, hardirqs
* Multiple enhancements for memleak, better error path checking, adding mremap uprobe
* Support get pid/tgid in pid namespaces (cpudist, profile)
* multiple pid filtering support: profile, offcputime
* detect whether elf binary is PIE even if the binary is marked as DYN
* Fix several compilation issues with llvm20
* doc update, other bug fixes and tools improvement.
bcc (0.31.0-1) unstable; urgency=low
* Support for kernel up to 6.9.
* Add support for bcachefs to fsdist and fsslower tools
* libbpf tool update: memleak, syncsnoop, numamove, syscount, vfsstat, tcptop, capable, syncsnoop, sigsnoop, etc.
* bcc tool update: biolatency, biosnoop, biotop, vfsstat, kvmexit, sslsniff, swapin, etc.
* build: Remove llvm-dev dependency from libbcc
* build: Remove dependency on LLVM header from libbcc packages
* usdt: Fix bare register dereference on aarch64
* Extend `bcc_proc` API which allows to limit search to specific pid
* Fix several flaky tests.
* doc update, other bug fixes and tools improvement.
-- Yonghong Song <ys114321@gmail.com> Sat, 27 Jul 2024 17:00:00 +0000
bcc (0.30.0-1) unstable; urgency=low
* Support for kernel up to 6.8.
* Set minimum supported llvm version to 12, and add llvm17 test.
* Add workqueue latency observation tool.
* libbpf tool update: f2fsslower, opensnoop, futexctn, bindsnoop, ksnoop, klockstat, offcputime, etc.
* bcc tool update: memleak, ttysnoop, bashreadline, tcpdrop, execsnoop, etc.
* allow more flexible perf event options with new perf_custom_event_open() python API.
* Fix userspace stack unwinding on powerpc.
* add bpf_prog_test_run_opts() python API.
* several deb package related changes.
* Fix btf_type_tag issue with llvm 15.
* Fix several flaky tests.
* classify tools into different sub-categories.
* doc update, other bug fixes and tools improvement.
-- Yonghong Song <ys114321@gmail.com> Thu, 24 Mar 2024 17:00:00 +0000
bcc (0.29.1-1) unstable; urgency=low
* Fix Ubuntu 22.04 deb build
* Fix Ubuntu 22.04 Docker image build
-- Adrian Vladu <avladu@cloudbasesolutions.com> Thu, 14 Dec 2023 17:00:00 +0000
bcc (0.29.0-1) unstable; urgency=low
* Support for kernel up to 6.6.
* new bcc tools: rdmaucma
* new libbpf tools: f2fs, futexctn
* bcc tool update: tcpstates, statsnoop, runqlat, bio tools, tcptop, slabratetop, tcprtt, etc.
* libbpf tool update: tcprtt, tcppktlat, bio tools, execsnoop, bindsnoop, exitsnoop, etc.
* s390x support for libbpf-tools
* examples for perf/ipc
* expose pid parameter in bpf_open_perf_event
* allow for installing python as a non-system package
* ci improvement: deprecate ubuntu 18.04 and allow multiple llvm versions
* ci improvement: reitre fedora 34/26 and use fedora 38.
* fix misaligned pointer accesses in some ringbuf using libbpf-tools
* some new enhancement for powerpc and riscv.
* consolidate tools into different categories: filesystem/storage, networking, cpu and scheduling, etc.
* doc update, other bug fixes and tools improvement
-- Yonghong Song <ys114321@gmail.com> Thu, 6 Dec 2023 17:00:00 +0000
bcc (0.28.0-1) unstable; urgency=low
* Support for kernel up to 6.3.
* new libbpf tool: tcppktlat.
* bcc tool updates: funcslower, wakeuptime, profile, offcputime, deadlock, funccount, argdist, kvmexit, runqlen and cpuunclaimed.
* libbpf tool update: memleak, tcprtt, tcpconnlat, funclatency, syscount, cpufreq, biosnoop.
* support ringbuf_query for bcc tools.
* handle '[uprobes]' memory mapped file properly during stack tracing.
* Fix maximum allowed index for print_linear_hist for bcc tools.
* add module kfunc/kretfunc support.
* clang rewriter: initialize only the requested parameters
* filter with available_filter_functions to make multi-functions kprobes more robust for both bcc and libbpf tools.
* doc update, other bug fixes and tools improvement
-- Yonghong Song <ys114321@gmail.com> Wed, 28 Jun 2023 17:00:00 +0000
bcc (0.27.0-1) unstable; urgency=low
* Support for kernel up to 6.2
* bcc tool updates for ttysnoop, slabratetop, readahead, nfsslower, cpudist, cachetop, cachestat, etc.
* libbpf-tools updates for mdflush, drsnoop, statsnoop, ttysnoop, softirqs, wakeuptime, cachestat, numamove, etc.
* fix for incomplete static libraries
* implement zip archive support
* upgrade to use c++14 standard
* new libbpf-tools: memleak
* add loongarch support in libbpft-tools
* doc update, bug fixes and other tools improvement
-- Yonghong Song <ys114321@gmail.com> Wed, 02 Apr 2023 17:00:00 +0000
bcc (0.26.0-1) unstable; urgency=low
* Support for kernel up to 6.1
* bcc tool updates for biosnoop, opensnoop, biopattern, killsnoop, runqslower, offcputime, wakeuptime, etc.
* libbpf-tools updates for klockstat, sigsnoop, hardirqs, softirqs, opensnoop, statsnoop, offcputime, tcplife, cpufreq, cpudist, etc.
* new libbpf-tools: tcptop, tcpstates, biotop, capable
* ci: add support for fedora 36 container and new workflow for containers
* doc update, bug fixes and other tools improvement
-- Yonghong Song <ys114321@gmail.com> Wed, 10 Aug 2022 17:00:00 +0000
bcc (0.25.0-1) unstable; urgency=low
* Support for kernel up to 5.19
* bcc tool updates for oomkill.py, biolatpcts.py, sslsniff.py, tcpaccept.py, etc.
* libbpf tool updates for klockstat, opensnoop, tcpconnect, etc.
* new bcc tools: tcpcong
* new libbpf tools: tcpsynbl, mdflush, oomkill, sigsnoop
* usdt: support xmm registers as args for x64
* bpftool as a submodule now
* remove uses of libbpf deprecated APIs
* use new llvm pass manager
* support cgroup filtering libbpf tools
* fix shared lib module offset <-> global addr conversion
* riscv support
* LoongArch support
* doc update, bug fixes and other tools improvement
-- Yonghong Song <ys114321@gmail.com> Wed, 10 Aug 2022 17:00:00 +0000
bcc (0.24.0-1) unstable; urgency=low
* Support for kernel up to 5.16
* bcc tools: update for trace.py, sslsniff.py, tcptop.py, hardirqs.py, etc.
* new libbpf tools: bashreadline
* allow specify wakeup_events for perf buffer
* support BPF_MAP_TYPE_{INODE, TASK}_STORAGE maps
* remove all deprecated libbpf function usage
* remove P4/B language support
* major test infra change, using github actions now
* doc update, bug fixes and other tools improvement
-- Yonghong Song <ys114321@gmail.com> Wed, 14 Jan 2022 17:00:00 +0000
bcc (0.23.0-1) unstable; urgency=low
* Support for kernel up to 5.15
* bcc tools: update for kvmexit.py, tcpv4connect.py, cachetop.py, cachestat.py, etc.
* libbpf tools: update for update for mountsnoop, ksnoop, gethostlatency, etc.
* fix renaming of task_struct->state
* get pid namespace properly for a number of tools
* initial work for more libbpf utilization (less section names)
* doc update, bug fixes and other tools improvement
-- Yonghong Song <ys114321@gmail.com> Wed, 15 Nov 2021 17:00:00 +0000
bcc (0.22.0-1) unstable; urgency=low
* Support for kernel up to 5.14
* add ipv4/ipv6 filter support for tcp trace tools
* add python interface to attach raw perf events
* fix tcpstates for incorrect display of dport
* new options for bcc tools runqslower, argdist
* new libbpf-tools: filetop, exitsnoop, tcprtt
* doc update, bug fixes and other tools improvement
-- Yonghong Song <ys114321@gmail.com> Wed, 15 Sep 2021 17:00:00 +0000
bcc (0.21.0-1) unstable; urgency=low
* Support for kernel up to 5.13
* support for debug information from libdebuginfod
* finished support for map elements items_*_batch() APIs
* add atomic_increment() API
* support attach_func() and detach_func() in python
* fix displaying PID instead of TID for many tools
* new tools: kvmexit.py
* new libbpf-tools: gethostlatency, statsnoop, fsdist and solisten
* fix tools ttysnoop/readahead for newer kernels
* doc update and bug fixes
-- Yonghong Song <ys114321@gmail.com> Mon, 16 Jul 2021 17:00:00 +0000
bcc (0.20.0-1) unstable; urgency=low
* Support for kernel up to 5.12
* Some basic support for MIPS
* added bpf_map_lookup_batch and bpf_map_delete_batch support
* tools/funclatency.py support nested or recursive functions
* tools/biolatency.py can optionally print out average/total value
* fix possible marco HAVE_BUILTIN_BSWAP redefine warning for kernel >= 5.10.
* new tools: virtiostat
* new libbpf-tools: ext4dist
* doc update and bug fixes
-- Yonghong Song <ys114321@gmail.com> Mon, 5 May 2021 17:00:00 +0000
bcc (0.19.0-1) unstable; urgency=low
* Support for kernel up to 5.11
* allow BCC as a cmake subproject
* add LPORT support in tcpconnlat and tcpconnect
* added bpf_map_lookup_and_delete_batch support
* new tools: virtiostat
* new libbpf-tools: cpufreq, funclatency, cachestat
* add install target to libbpf-tools
* a few lua fixes
* doc update and bug fixes
-- Yonghong Song <ys114321@gmail.com> Mon, 19 Mar 2021 17:00:00 +0000
bcc (0.18.0-1) unstable; urgency=low
* Support for kernel up to 5.10
* add bpf kfunc/kretfunc C++ example
* add PT_REGS_PARMx_SYSCALL helper macro
* biolatency: allow json output
* biolatpcts: support measuring overall latencies between two events
* fix build when ENABLE_CLANG_JIT is disabled
* doc update and bug fixes
-- Yonghong Song <ys114321@gmail.com> Mon, 4 Jan 2021 17:00:00 +0000
bcc (0.17.0-1) unstable; urgency=low
* Support for kernel up to 5.9
* usdt: add uprobe refcnt support
* use newer llvm/clang versions in debian packaging if possible
* add bpf iterator C++ support
* new bcc tools: tcprtt, netqtop, swapin, tcpsynbl, threadsnoop
* tcpconnect: add DNS correlation to connect tracking
* new libbpf-tools: llcstat, numamove, runqlen, runqlat, softirgs, hardirqs
* doc update, bug fixes and some additional arguments for tools
-- Yonghong Song <ys114321@gmail.com> Thu, 29 Oct 2020 17:00:00 +0000
bcc (0.16.0-1) unstable; urgency=low
* Support for kernel up to 5.8
* trace.py: support kprobe/uprobe func offset
* support raw perf config for perf_event_open in python
* add BPFQueueStackTable support
* added Ringbuf support support
* libbpf-tools: readahead, biosnoop, bitesize, tcpconnlat, biopattern, biostacks
* bug fixes and some additional arguments for tools
-- Yonghong Song <ys114321@gmail.com> Sat, 22 Aug 2020 17:00:00 +0000
bcc (0.15.0-1) unstable; urgency=low
* Support for kernel up to 5.7
* new tools: funcinterval.py, dirtop.py
* support lsm bpf programs
* support multiple pid/tids for offwaketime
* usdt: add helpers to set semaphore values
* turn off x86 jump table optimization during jit compilation
* add support to use bpf_probe_read[_str_}{_user,kernel} in all bpf
* programs, fail back to old bpf_probe_read[_str] for old kernels
* tools: add filtering by mount namespace
* libbpf-tools: cpudist, syscount, execsnoop, vfsstat
* lots of bug fixes and a few additional arguments for tools
-- Yonghong Song <ys114321@gmail.com> Mon, 19 Jun 2020 17:00:00 +0000
bcc (0.14.0-1) unstable; urgency=low
* Support for kernel up to 5.6
* new tools: biolatpcts.py
* libbpf-tools: tools based on CORE and libbpf library directly
* add --cgroupmap to various tools, filtering based cgroup
* support kfunc (faster kprobe) for vfsstat, klockstat and opensnoop
* lots of bug fixes and a few additional arguments for tools
-- Yonghong Song <ys114321@gmail.com> Mon, 20 Apr 2020 17:00:00 +0000
bcc (0.13.0-1) unstable; urgency=low
* Support for kernel up to 5.5
* bindsnoop tool to track tcp/udp bind information
* added compile-once run-everywhere based libbpf-tools, currently
only runqslower is implemented.
* new map support: sockhash, sockmap, sk_storage, cgroup_storage
* enable to run github actions on the diff
* cgroupmap based cgroup filtering for opensnoop, execsnoop and bindsnoop.
* lots of bug fixes.
-- Yonghong Song <ys114321@gmail.com> Wed, 19 Feb 2020 17:00:00 +0000
bcc (0.12.0-1) unstable; urgency=low
* Support for kernel up to 5.4
* klockstat tool to track kernel mutex lock statistics
* cmake option CMAKE_USE_LIBBPF_PACKAGE to build a bcc shared library
linking with distro libbpf_static.a
* new map.lookup_or_try_init() API to remove hidden return in
map.lookup_or_init()
* BPF_ARRAY_OF_MAPS and BPF_HASH_OF_MAPS support
* support symbol offset for uprobe in both C++ and python API,
kprobe already has the support
* bug fixes for trace.py, tcpretrans.py, runqslower.py, etc.
-- Yonghong Song <ys114321@gmail.com> Tue, 10 Dec 2019 17:00:00 +0000
bcc (0.11.0-1) unstable; urgency=low
* Support for kernel up to 5.3
* Corresponding libbpf submodule release is v0.0.5
* Fix USDT issue with multi-threaded applications
* Fixed the early return behavior of lookup_or_init
* Support for nic hardware offload
* Fixed and Enabled Travis CI
* A lot of tools change with added new options, etc.
-- Yonghong Song <ys114321@gmail.com> Tue, 03 Oct 2019 17:00:00 +0000
bcc (0.10.0-1) unstable; urgency=low
* Support for kernel up to 5.1
* corresponding libbpf submodule release is v0.0.3
* support for reading kernel headers from /proc
* libbpf.{a,so} renamed to libcc_bpf.{a,so}
* new common options for some tools
* new tool: drsnoop
* s390 USDT support
-- Brenden Blanco <bblanco@gmail.com> Tue, 28 May 2019 17:00:00 +0000
bcc (0.9.0-1) unstable; urgency=low
* Adds support for BTF
* Uses libbpf common library to wrap syscall API
* Many bugfixes and new tools
-- Brenden Blanco <bblanco@gmail.com> Thu, 07 Mar 2019 17:00:00 +0000
bcc (0.8.0-1) unstable; urgency=low
* Support for kernel up to 5.0
-- Brenden Blanco <bblanco@gmail.com> Fri, 11 Jan 2019 17:00:00 +0000
bcc (0.7.0-1) unstable; urgency=low
* Support for kernel up to 4.18
-- Brenden Blanco <bblanco@gmail.com> Tue, 04 Sep 2018 17:00:00 +0000
bcc (0.6.1-1) unstable; urgency=low
* Build support for Fedora 28 and Ubuntu 18.04
* Add option to change license
* Optimizations for some uses of bpf_probe_reads
-- Brenden Blanco <bblanco@gmail.com> Mon, 23 Jul 2018 17:00:00 +0000
bcc (0.6.0-1) unstable; urgency=low
* Support for kernel up to 4.17
* Many bugfixes
* Many new tools
* Improved python3 support
-- Brenden Blanco <bblanco@gmail.com> Wed, 13 Jun 2018 17:00:00 +0000
bcc (0.5.0-1) unstable; urgency=low
* Support for USDT in ARM64
* Bugfixes for 4.14 in some tools
* Fixes for smoke test failures
* Runtime memory usage reductions
-- Brenden Blanco <bblanco@gmail.com> Wed, 29 Nov 2017 17:00:00 +0000
bcc (0.4.0-1) unstable; urgency=low
* Bugfixes
* Support for kernel up to 4.14
-- Brenden Blanco <bblanco@gmail.com> Fri, 20 Oct 2017 17:00:00 +0000
bcc (0.3.0-1) unstable; urgency=low
* Many bugfixes
* Many tools converted to perf ring buffer
* New utilities in tools/
* capable, cpuunclaimed, dbslower, dbstat, deadlock_detector, llcstat,
mountsnoop, runqlen, slabratetop, syscount, tcplife, tcptop, ttysnoop,
ucalls, uflow, ugc, uobjnew, ustat, uthreads
* New C++ API
* Support for kernel up to 4.10
-- Brenden Blanco <bblanco@gmail.com> Thu, 09 Mar 2017 19:08:08 +0000
bcc (0.2.0-1) unstable; urgency=low
* Add many new utilities in tools/
* Support for USDT
* Support for lua
* Many utilities converted to perf ring buffer
* Support for tracepoints
-- Brenden Blanco <bblanco@plumgrid.com> Thu, 08 Sep 2016 17:05:28 -0700
bcc (0.1.8-1) unstable; urgency=low
* Add many new utilities in tools/
* wakeuptime, offwaketime, argdist, {xfs,zfs,ext4}{slower,dist}, others
* Support for bpf_perf_event()
* Support for public tables shared between programs
* Support for up to 4.4 features
* Remove external file dependencies from clang lib
-- Brenden Blanco <bblanco@plumgrid.com> Mon, 23 Feb 2016 00:41:00 +0000
bcc (0.1.7-1) unstable; urgency=low
* Tracing features and bugfixes
* Built against LLVM 3.8 HEAD
-- Brenden Blanco <bblanco@plumgrid.com> Mon, 12 Oct 2015 16:47:09 +0000
bcc (0.1.6-1) unstable; urgency=low
* Stability fixes
* Improvements to python API
* Tracing features
* Support for kernel 4.2 features
-- Brenden Blanco <bblanco@plumgrid.com> Wed, 02 Sep 2015 16:23:19 +0000
bcc (0.1.5-1) unstable; urgency=low
* Initial release
-- Brenden Blanco <bblanco@plumgrid.com> Mon, 06 Jul 2015 18:04:28 +0000
================================================
FILE: debian/compat
================================================
9
================================================
FILE: debian/control
================================================
Source: bcc
Maintainer: Brenden Blanco <bblanco@plumgrid.com>
Section: misc
Priority: optional
Standards-Version: 3.9.5
Build-Depends: debhelper (>= 9), cmake,
libllvm12,
llvm-12-dev,
libclang-12-dev,
clang-format-12,
libelf-dev, bison, flex, libfl-dev, libedit-dev, zlib1g-dev, git,
python3, python3-netaddr, python3-pyroute2, python3-setuptools, python3-pip,
luajit,
libluajit-5.1-dev, arping, inetutils-ping | iputils-ping, iperf, netperf,
ethtool, devscripts, dh-python, zip
# add 'libdebuginfod-dev' to Build-Depends for libdebuginfod support
Homepage: https://github.com/iovisor/bcc
Package: libbcc
Architecture: any
Provides: libbpfcc, libbpfcc-dev
Conflicts: libbpfcc, libbpfcc-dev
Depends: libc6, libstdc++6, libelf1
# add 'libdebuginfod1' to Depends if built with libdebuginfod support
Description: Shared Library for BPF Compiler Collection (BCC)
Shared Library for BPF Compiler Collection to control BPF programs
from userspace.
Package: libbcc-examples
Architecture: any
Depends: libbcc (= ${binary:Version})
Description: Examples for BPF Compiler Collection (BCC)
Package: python-bcc
Architecture: all
Provides: python-bpfcc
Depends: libbcc (= ${binary:Version}), python3, binutils
Description: Python3 wrappers for BPF Compiler Collection (BCC)
Package: bcc-tools
Architecture: all
Provides: bpfcc-tools
Conflicts: bpfcc-tools
Depends: python-bcc (= ${binary:Version})
Description: Command line tools for BPF Compiler Collection (BCC)
Package: bcc-lua
Architecture: all
Provides: bpfcc-lua
Conflicts: bpfcc-lua
Depends: libbcc (= ${binary:Version})
Description: Standalone tool to run BCC tracers written in Lua
================================================
FILE: debian/copyright
================================================
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: bcc
Source: https://github.com/iovisor/bcc
Files: *
Copyright: 2015 PLUMgrid, Inc.
License: Apache-2.0
================================================
FILE: debian/docs
================================================
FAQ.txt
LICENSE.txt
README.md
================================================
FILE: debian/libbcc-examples.install
================================================
usr/share/bcc/examples/*
================================================
FILE: debian/libbcc.install
================================================
usr/include/bcc/*
usr/lib/*/libbcc*
usr/lib/*/pkgconfig/libbcc.pc
================================================
FILE: debian/python-bcc.install
================================================
usr/lib/python3*
================================================
FILE: debian/rules
================================================
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
DEBIAN_VERSION := $(shell dpkg-parsechangelog | sed -rne "s,^Version: (.*),\1,p")
DEBIAN_REVISION := $(shell dpkg-parsechangelog | sed -rne "s,^Version: ([0-9.]+)(~|-)(.*),\3,p")
UPSTREAM_VERSION := $(shell dpkg-parsechangelog | sed -rne "s,^Version: ([0-9.]+)(~|-)(.*),\1,p")
%:
dh $@ --buildsystem=cmake --parallel --with python3
# tests cannot be run in parallel
override_dh_auto_test:
dh_auto_test -O--buildsystem=cmake -O--no-parallel
# FIXME: LLVM_DEFINITIONS is broken somehow in LLVM cmake upstream
override_dh_auto_configure:
dh_auto_configure -- -DREVISION_LAST=$(UPSTREAM_VERSION) -DREVISION=$(UPSTREAM_VERSION) -DLLVM_DEFINITIONS="-D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS" -DPYTHON_CMD="python3"
================================================
FILE: debian/source/format
================================================
3.0 (quilt)
================================================
FILE: docker/Dockerfile.debian
================================================
FROM debian:stretch
MAINTAINER Brenden Blanco <bblanco@gmail.com>
RUN DEBIAN_RELEASE=stretch && \
# Adding non-free repo for netperf
echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE} non-free" > \
/etc/apt/sources.list.d/debian-non-free.list && \
apt-get -qq update && \
apt-get -y install pbuilder aptitude
COPY ./ /root/bcc
WORKDIR /root/bcc
RUN /usr/lib/pbuilder/pbuilder-satisfydepends && \
./scripts/build-deb.sh
================================================
FILE: docker/Dockerfile.ubuntu
================================================
ARG OS_TAG=22.04
FROM ubuntu:${OS_TAG} as builder
ARG OS_TAG
ARG BUILD_TYPE=release
ARG DEBIAN_FRONTEND=noninteractive
MAINTAINER Brenden Blanco <bblanco@gmail.com>
RUN apt-get -qq update && \
apt-get -y install pbuilder aptitude
COPY ./ /root/bcc
WORKDIR /root/bcc
RUN /usr/lib/pbuilder/pbuilder-satisfydepends && \
./scripts/build-deb.sh ${BUILD_TYPE}
FROM ubuntu:${OS_TAG}
COPY --from=builder /root/bcc/*.deb /root/bcc/
RUN \
apt-get update -y && \
DEBIAN_FRONTEND=noninteractive apt-get install -y python3 python3-pip python-is-python3 binutils libelf1 kmod llvm-12-dev && \
pip3 install dnslib cachetools pyelftools && \
dpkg -i /root/bcc/*.deb && \
apt-get clean
================================================
FILE: docker/build/Dockerfile.fedora
================================================
# Copyright (c) PLUMgrid, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")
ARG VERSION="34"
FROM fedora:${VERSION}
ARG RUBY_INSTALL_VERSION="0.8.4"
ENV RUBY_INSTALL_VERSION=$RUBY_INSTALL_VERSION
ARG RUBY_VERSION="3.1.2"
ENV RUBY_VERSION=$RUBY_VERSION
MAINTAINER Dave Marchevsky <davemarchevsky@fb.com>
RUN dnf -y install \
bison \
cmake \
flex \
gcc \
gcc-c++ \
git \
libxml2-devel \
make \
rpm-build \
wget \
zlib-devel \
llvm \
llvm-devel \
clang-devel \
elfutils-debuginfod-client-devel \
# elfutils-libelf-devel-static \
elfutils-libelf-devel \
python3-devel \
libstdc++ \
libstdc++-devel \
systemtap-sdt-devel
RUN dnf -y install \
python3 \
python3-pip
RUN dnf -y install \
rust \
cargo
RUN if [[ ! -e /usr/bin/python && -e /usr/bin/python3 ]]; then \
ln -s $(readlink /usr/bin/python3) /usr/bin/python; \
fi
RUN dnf -y install \
procps \
iputils \
net-tools \
hostname \
iproute \
bpftool \
iperf \
netperf \
python3-pyroute2 \
python3-netaddr \
python3-dnslib \
python3-cachetools \
python3-pyelftools
RUN wget -O ruby-install-${RUBY_INSTALL_VERSION}.tar.gz \
https://github.com/postmodern/ruby-install/archive/v${RUBY_INSTALL_VERSION}.tar.gz && \
tar -xzvf ruby-install-${RUBY_INSTALL_VERSION}.tar.gz && \
cd ruby-install-${RUBY_INSTALL_VERSION}/ && \
make install && \
cd .. && \
rm -rf ruby-install-${RUBY_INSTALL_VERSION}*
RUN ruby-install --system ruby ${RUBY_VERSION} -c -- --enable-dtrace
================================================
FILE: docker/build/Dockerfile.ubuntu
================================================
ARG VERSION="24.04"
FROM ubuntu:${VERSION}
ARG LLVM_VERSION="15"
ENV LLVM_VERSION=$LLVM_VERSION
ARG SHORTNAME="noble"
ARG RUBY_INSTALL_VERSION="0.8.4"
ENV RUBY_INSTALL_VERSION=$RUBY_INSTALL_VERSION
ARG RUBY_VERSION="3.3.6"
ENV RUBY_VERSION=$RUBY_VERSION
RUN /bin/bash -c 'apt-get update && apt-get install -y curl gnupg &&\
llvmRepository="\n\
deb http://apt.llvm.org/${SHORTNAME}/ llvm-toolchain-${SHORTNAME} main\n\
deb-src http://apt.llvm.org/${SHORTNAME}/ llvm-toolchain-${SHORTNAME} main\n" && \
echo -e $llvmRepository >> /etc/apt/sources.list && \
read -ra versions <<<"${LLVM_VERSION}" && \
for version in ${versions[@]}; \
do \
llvmRepository="\n\
deb http://apt.llvm.org/${SHORTNAME}/ llvm-toolchain-${SHORTNAME}-${version} main\n\
deb-src http://apt.llvm.org/${SHORTNAME}/ llvm-toolchain-${SHORTNAME}-${version} main\n" &&\
echo -e $llvmRepository >> /etc/apt/sources.list; done && \
curl -L https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -'
ARG DEBIAN_FRONTEND="noninteractive"
ENV TZ="Etc/UTC"
RUN /bin/bash -c 'apt-get install -y \
util-linux \
bison \
binutils-dev \
cmake \
flex \
g++ \
git \
kmod \
wget \
libelf-dev \
zlib1g-dev \
libiberty-dev \
liblzma-dev \
libbfd-dev \
libedit-dev \
systemtap-sdt-dev \
sudo \
iproute2 \
python3 \
python3-pip \
ethtool \
arping \
netperf \
iperf \
iputils-ping \
bridge-utils \
libtinfo6 \
libtinfo-dev \
libzstd-dev \
xz-utils \
zip && \
read -ra versions <<<"${LLVM_VERSION}" && \
for version in ${versions[@]}; \
do \
apt-get install -y \
clang-${version} \
libclang-${version}-dev \
libclang-common-${version}-dev \
libclang1-${version} \
llvm-${version} \
llvm-${version}-dev \
llvm-${version}-runtime \
libllvm${version} && \
if [ "${version}" -ge "15" ]; \
then \
apt-get install -y libpolly-${version}-dev; \
fi; \
done \
&& \
apt-get -y clean'
RUN apt-get install -y python3-setuptools \
python3-pyroute2 \
python3-netaddr \
python3-dnslib \
python3-cachetools \
python3-pyelftools
# FIXME this is faster than building from source, but it seems there is a bug
# in probing libruby.so rather than ruby binary
#RUN apt-get update -qq && \
# apt-get install -y software-properties-common && \
# apt-add-repository ppa:brightbox/ruby-ng && \
# apt-get update -qq && apt-get install -y ruby2.6 ruby2.6-dev
RUN wget -O ruby-install-${RUBY_INSTALL_VERSION}.tar.gz \
https://github.com/postmodern/ruby-install/archive/v${RUBY_INSTALL_VERSION}.tar.gz && \
tar -xzvf ruby-install-${RUBY_INSTALL_VERSION}.tar.gz && \
cd ruby-install-${RUBY_INSTALL_VERSION}/ && \
make install && \
cd .. && \
rm -rf ruby-install-${RUBY_INSTALL_VERSION}*
RUN ruby-install --system ruby ${RUBY_VERSION} -c -- --enable-dtrace
RUN if [ ! -f "/usr/bin/python" ]; then ln -s /bin/python3 /usr/bin/python; fi
RUN if [ ! -f "/usr/local/bin/python" ]; then ln -s /usr/bin/python3 /usr/local/bin/python; fi
================================================
FILE: docs/kernel-versions.md
================================================
# BPF Features by Linux Kernel Version
## eBPF support
Kernel version | Commit
---------------|-------
3.15 | [`bd4cf0ed331a`](https://github.com/torvalds/linux/commit/bd4cf0ed331a275e9bf5a49e6d0fd55dffc551b8)
## JIT compiling
The list of supported architectures for your kernel can be retrieved with:
git grep HAVE_EBPF_JIT arch/
Feature / Architecture | Kernel version | Commit
-----------------------|----------------|-------
x86\_64 | 3.16 | [`622582786c9e`](https://github.com/torvalds/linux/commit/622582786c9e041d0bd52bde201787adeab249f8)
ARM64 | 3.18 | [`e54bcde3d69d`](https://github.com/torvalds/linux/commit/e54bcde3d69d40023ae77727213d14f920eb264a)
s390 | 4.1 | [`054623105728`](https://github.com/torvalds/linux/commit/054623105728b06852f077299e2bf1bf3d5f2b0b)
Constant blinding for JIT machines | 4.7 | [`4f3446bb809f`](https://github.com/torvalds/linux/commit/4f3446bb809f20ad56cadf712e6006815ae7a8f9)
PowerPC64 | 4.8 | [`156d0e290e96`](https://github.com/torvalds/linux/commit/156d0e290e969caba25f1851c52417c14d141b24)
Constant blinding - PowerPC64 | 4.9 | [`b7b7013cac55`](https://github.com/torvalds/linux/commit/b7b7013cac55d794940bd9cb7b7c55c9dececac4)
Sparc64 | 4.12 | [`7a12b5031c6b`](https://github.com/torvalds/linux/commit/7a12b5031c6b947cc13918237ae652b536243b76)
MIPS | 4.13 | [`f381bf6d82f0`](https://github.com/torvalds/linux/commit/f381bf6d82f032b7410185b35d000ea370ac706b)
ARM32 | 4.14 | [`39c13c204bb1`](https://github.com/torvalds/linux/commit/39c13c204bb1150d401e27d41a9d8b332be47c49)
x86\_32 | 4.18 | [`03f5781be2c7`](https://github.com/torvalds/linux/commit/03f5781be2c7b7e728d724ac70ba10799cc710d7)
RISC-V RV64G | 5.1 | [`2353ecc6f91f`](https://github.com/torvalds/linux/commit/2353ecc6f91fd15b893fa01bf85a1c7a823ee4f2)
RISC-V RV32G | 5.7 | [`5f316b65e99f`](https://github.com/torvalds/linux/commit/5f316b65e99f109942c556dc8790abd4c75bcb34)
PowerPC32 | 5.13 | [`51c66ad849a7`](https://github.com/torvalds/linux/commit/51c66ad849a703d9bbfd7704c941827aed0fd9fd)
LoongArch | 6.1 | [`5dc615520c4d`](https://github.com/torvalds/linux/commit/5dc615520c4dfb358245680f1904bad61116648e)
## Main features
Several (but not all) of these _main features_ translate to an eBPF program type.
The list of such program types supported in your kernel can be found in file
[`include/uapi/linux/bpf.h`](https://github.com/torvalds/linux/blob/master/include/uapi/linux/bpf.h):
git grep -W 'bpf_prog_type {' include/uapi/linux/bpf.h
Feature | Kernel version | Commit
--------|----------------|-------
`AF_PACKET` (libpcap/tcpdump, `cls_bpf` classifier, netfilter's `xt_bpf`, team driver's load-balancing mode…) | 3.15 | [`bd4cf0ed331a`](https://github.com/torvalds/linux/commit/bd4cf0ed331a275e9bf5a49e6d0fd55dffc551b8)
Kernel helpers | 3.15 | [`bd4cf0ed331a`](https://github.com/torvalds/linux/commit/bd4cf0ed331a275e9bf5a49e6d0fd55dffc551b8)
`bpf()` syscall | 3.18 | [`99c55f7d47c0`](https://github.com/torvalds/linux/commit/99c55f7d47c0dc6fc64729f37bf435abf43f4c60)
Maps (_a.k.a._ Tables; details below) | 3.18 | [`99c55f7d47c0`](https://github.com/torvalds/linux/commit/99c55f7d47c0dc6fc64729f37bf435abf43f4c60)
BPF attached to sockets | 3.19 | [`89aa075832b0`](https://github.com/torvalds/linux/commit/89aa075832b0da4402acebd698d0411dcc82d03e)
BPF attached to `kprobes` | 4.1 | [`2541517c32be`](https://github.com/torvalds/linux/commit/2541517c32be2531e0da59dfd7efc1ce844644f5)
`cls_bpf` / `act_bpf` for `tc` | 4.1 | [`e2e9b6541dd4`](https://github.com/torvalds/linux/commit/e2e9b6541dd4b31848079da80fe2253daaafb549)
Tail calls | 4.2 | [`04fd61ab36ec`](https://github.com/torvalds/linux/commit/04fd61ab36ec065e194ab5e74ae34a5240d992bb)
Non-root programs on sockets | 4.4 | [`1be7f75d1668`](https://github.com/torvalds/linux/commit/1be7f75d1668d6296b80bf35dcf6762393530afc)
Persistent maps and programs (virtual FS) | 4.4 | [`b2197755b263`](https://github.com/torvalds/linux/commit/b2197755b2633e164a439682fb05a9b5ea48f706)
`tc`'s `direct-action` (`da`) mode | 4.4 | [`045efa82ff56`](https://github.com/torvalds/linux/commit/045efa82ff563cd4e656ca1c2e354fa5bf6bbda4)
`tc`'s `clsact` qdisc | 4.5 | [`1f211a1b929c`](https://github.com/torvalds/linux/commit/1f211a1b929c804100e138c5d3d656992cfd5622)
BPF attached to tracepoints | 4.7 | [`98b5c2c65c29`](https://github.com/torvalds/linux/commit/98b5c2c65c2951772a8fc661f50d675e450e8bce)
Direct packet access | 4.7 | [`969bf05eb3ce`](https://github.com/torvalds/linux/commit/969bf05eb3cedd5a8d4b7c346a85c2ede87a6d6d)
XDP (see below) | 4.8 | [`6a773a15a1e8`](https://github.com/torvalds/linux/commit/6a773a15a1e8874e5eccd2f29190c31085912c95)
BPF attached to perf events | 4.9 | [`0515e5999a46`](https://github.com/torvalds/linux/commit/0515e5999a466dfe6e1924f460da599bb6821487)
Hardware offload for `tc`'s `cls_bpf` | 4.9 | [`332ae8e2f6ec`](https://github.com/torvalds/linux/commit/332ae8e2f6ecda5e50c5c62ed62894963e3a83f5)
Verifier exposure and internal hooks | 4.9 | [`13a27dfc6697`](https://github.com/torvalds/linux/commit/13a27dfc669724564aafa2699976ee756029fed2)
BPF attached to cgroups for socket filtering | 4.10 | [`0e33661de493`](https://github.com/torvalds/linux/commit/0e33661de493db325435d565a4a722120ae4cbf3)
Lightweight tunnel encapsulation | 4.10 | [`3a0af8fd61f9`](https://github.com/torvalds/linux/commit/3a0af8fd61f90920f6fa04e4f1e9a6a73c1b4fd2)
**e**BPF support for `xt_bpf` module (iptables) | 4.10 | [`2c16d6033264`](https://github.com/torvalds/linux/commit/2c16d60332643e90d4fa244f4a706c454b8c7569)
BPF program tag | 4.10 | [`7bd509e311f4`](https://github.com/torvalds/linux/commit/7bd509e311f408f7a5132fcdde2069af65fa05ae)
Tracepoints to debug BPF | 4.11 (removed in 4.18) | [`a67edbf4fb6d`](https://github.com/torvalds/linux/commit/a67edbf4fb6deadcfe57a04a134abed4a5ba3bb5) [`4d220ed0f814`](https://github.com/torvalds/linux/commit/4d220ed0f8140c478ab7b0a14d96821da639b646)
Testing / benchmarking BPF programs | 4.12 | [`1cf1cae963c2`](https://github.com/torvalds/linux/commit/1cf1cae963c2e6032aebe1637e995bc2f5d330f4)
BPF programs and maps IDs | 4.13 | [`dc4bb0e23561`](https://github.com/torvalds/linux/commit/dc4bb0e2356149aee4cdae061936f3bbdd45595c)
BPF support for `sock_ops` | 4.13 | [`40304b2a1567`](https://github.com/torvalds/linux/commit/40304b2a1567fecc321f640ee4239556dd0f3ee0)
BPF support for skbs on sockets | 4.14 | [`b005fd189cec`](https://github.com/torvalds/linux/commit/b005fd189cec9407b700599e1e80e0552446ee79)
bpftool utility in kernel sources | 4.15 | [`71bb428fe2c1`](https://github.com/torvalds/linux/commit/71bb428fe2c19512ac671d5ee16ef3e73e1b49a8)
BPF attached to cgroups as device controller | 4.15 | [`ebc614f68736`](https://github.com/torvalds/linux/commit/ebc614f687369f9df99828572b1d85a7c2de3d92)
bpf2bpf function calls | 4.16 | [`cc8b0b92a169`](https://github.com/torvalds/linux/commit/cc8b0b92a1699bc32f7fec71daa2bfc90de43a4d)
BPF used for monitoring socket RX/TX data | 4.17 | [`4f738adba30a`](https://github.com/torvalds/linux/commit/4f738adba30a7cfc006f605707e7aee847ffefa0)
BPF attached to raw tracepoints | 4.17 | [`c4f6699dfcb8`](https://github.com/torvalds/linux/commit/c4f6699dfcb8558d138fe838f741b2c10f416cf9)
BPF attached to `bind()` system call | 4.17 | [`4fbac77d2d09`](https://github.com/torvalds/linux/commit/4fbac77d2d092b475dda9eea66da674369665427) [`aac3fc320d94`](https://github.com/torvalds/linux/commit/aac3fc320d9404f2665a8b1249dc3170d5fa3caf)
BPF attached to `connect()` system call | 4.17 | [`d74bad4e74ee`](https://github.com/torvalds/linux/commit/d74bad4e74ee373787a9ae24197c17b7cdc428d5)
BPF Type Format (BTF) | 4.18 | [`69b693f0aefa`](https://github.com/torvalds/linux/commit/69b693f0aefa0ed521e8bd02260523b5ae446ad7)
AF_XDP | 4.18 | [`fbfc504a24f5`](https://github.com/torvalds/linux/commit/fbfc504a24f53f7ebe128ab55cb5dba634f4ece8)
bpfilter | 4.18 | [`d2ba09c17a06`](https://github.com/torvalds/linux/commit/d2ba09c17a0647f899d6c20a11bab9e6d3382f07)
End.BPF action for seg6local LWT | 4.18 | [`004d4b274e2a`](https://github.com/torvalds/linux/commit/004d4b274e2a1a895a0e5dc66158b90a7d463d44)
BPF attached to LIRC devices | 4.18 | [`f4364dcfc86d`](https://github.com/torvalds/linux/commit/f4364dcfc86df7c1ca47b256eaf6b6d0cdd0d936)
Pass map values to map helpers | 4.18 | [`d71962f3e627`](https://github.com/torvalds/linux/commit/d71962f3e627b5941804036755c844fabfb65ff5)
BPF socket reuseport | 4.19 | [`2dbb9b9e6df6`](https://github.com/torvalds/linux/commit/2dbb9b9e6df67d444fbe425c7f6014858d337adf)
BPF flow dissector | 4.20 | [`d58e468b1112`](https://github.com/torvalds/linux/commit/d58e468b1112dcd1d5193c0a89ff9f98b5a3e8b9)
BPF 1M insn limit | 5.2 | [`c04c0d2b968a`](https://github.com/torvalds/linux/commit/c04c0d2b968ac45d6ef020316808ef6c82325a82)
BPF cgroup sysctl | 5.2 | [`7b146cebe30c`](https://github.com/torvalds/linux/commit/7b146cebe30cb481b0f70d85779da938da818637)
BPF raw tracepoint writable | 5.2 | [`9df1c28bb752`](https://github.com/torvalds/linux/commit/9df1c28bb75217b244257152ab7d788bb2a386d0)
BPF bounded loop | 5.3 | [`2589726d12a1`](https://github.com/torvalds/linux/commit/2589726d12a1b12eaaa93c7f1ea64287e383c7a5)
BPF trampoline | 5.5 | [`fec56f5890d9`](https://github.com/torvalds/linux/commit/fec56f5890d93fc2ed74166c397dc186b1c25951)
BPF LSM hook | 5.7 | [`fc611f47f218`](https://github.com/torvalds/linux/commit/fc611f47f2188ade2b48ff6902d5cce8baac0c58) [`641cd7b06c91`](https://github.com/torvalds/linux/commit/641cd7b06c911c5935c34f24850ea18690649917)
BPF iterator | 5.8 | [`180139dca8b3`](https://github.com/torvalds/linux/commit/180139dca8b38c858027b8360ee10064fdb2fbf7)
BPF socket lookup hook | 5.9 | [`e9ddbb7707ff`](https://github.com/torvalds/linux/commit/e9ddbb7707ff5891616240026062b8c1e29864ca)
Sleepable BPF programs | 5.10 | [`1e6c62a88215`](https://github.com/torvalds/linux/commit/1e6c62a8821557720a9b2ea9617359b264f2f67c)
Mixing bpf2bpf function calls and tailcalls (x86\_64) | 5.10 | [`e411901c0b77`](https://github.com/torvalds/linux/commit/e411901c0b775a3ae7f3e2505f8d2d90ac696178)
Mixing bpf2bpf function calls and tailcalls (arm64) | 6.0 | [`d4609a5d8c70`](https://github.com/torvalds/linux/commit/d4609a5d8c70d21b4a3f801cf896a3c16c613fe1)
Mixing bpf2bpf function calls and tailcalls (s390) | 6.3 | [`dd691e847d28`](https://github.com/torvalds/linux/commit/dd691e847d28ac5f8b8e3005be44fd0e46722809)
Mixing bpf2bpf function calls and tailcalls (loongarch) | 6.4 | [`bb035ef0cc91`](https://github.com/torvalds/linux/commit/bb035ef0cc91e115faa80187ac8886a7f1914d06)
### Program types
Program type | Kernel version | Commit | Enum
-------------|----------------|--------|-----
Socket filter | 3.19 | [`ddd872bc3098`](https://github.com/torvalds/linux/commit/ddd872bc3098f9d9abe1680a6b2013e59e3337f7) | BPF_PROG_TYPE_SOCKET_FILTER
Kprobe | 4.1 | [`2541517c32be`](https://github.com/torvalds/linux/commit/2541517c32be2531e0da59dfd7efc1ce844644f5) | BPF_PROG_TYPE_KPROBE
traffic control (TC) | 4.1 | [`96be4325f443`](https://github.com/torvalds/linux/commit/96be4325f443dbbfeb37d2a157675ac0736531a1) | BPF_PROG_TYPE_SCHED_CLS
traffic control (TC) | 4.1 | [`94caee8c312d`](https://github.com/torvalds/linux/commit/94caee8c312d96522bcdae88791aaa9ebcd5f22c) | BPF_PROG_TYPE_SCHED_ACT
Tracepoint | 4.7 | [`98b5c2c65c29`](https://github.com/torvalds/linux/commit/98b5c2c65c2951772a8fc661f50d675e450e8bce) | BPF_PROG_TYPE_TRACEPOINT
XDP | 4.8 | [`6a773a15a1e8`](https://github.com/torvalds/linux/commit/6a773a15a1e8874e5eccd2f29190c31085912c95) | BPF_PROG_TYPE_XDP
Perf event | 4.9 | [`0515e5999a46`](https://github.com/torvalds/linux/commit/0515e5999a466dfe6e1924f460da599bb6821487) | BPF_PROG_TYPE_PERF_EVENT
cgroup socket filtering | 4.10 | [`0e33661de493`](https://github.com/torvalds/linux/commit/0e33661de493db325435d565a4a722120ae4cbf3) | BPF_PROG_TYPE_CGROUP_SKB
cgroup sock modification | 4.10 | [`610236587600`](https://github.com/torvalds/linux/commit/61023658760032e97869b07d54be9681d2529e77) | BPF_PROG_TYPE_CGROUP_SOCK
lightweight tunnel (IN) | 4.10 | [`3a0af8fd61f9`](https://github.com/torvalds/linux/commit/3a0af8fd61f90920f6fa04e4f1e9a6a73c1b4fd2) | BPF_PROG_TYPE_LWT_IN
lightweight tunnel (OUT) | 4.10 | [`3a0af8fd61f9`](https://github.com/torvalds/linux/commit/3a0af8fd61f90920f6fa04e4f1e9a6a73c1b4fd2) | BPF_PROG_TYPE_LWT_OUT
lightweight tunnel (XMIT) | 4.10 | [`3a0af8fd61f9`](https://github.com/torvalds/linux/commit/3a0af8fd61f90920f6fa04e4f1e9a6a73c1b4fd2) | BPF_PROG_TYPE_LWT_XMIT
cgroup sock ops (per conn) | 4.13 | [`40304b2a1567`](https://github.com/torvalds/linux/commit/40304b2a1567fecc321f640ee4239556dd0f3ee0) | BPF_PROG_TYPE_SOCK_OPS
stream parser / stream verdict | 4.14 | [`b005fd189cec`](https://github.com/torvalds/linux/commit/b005fd189cec9407b700599e1e80e0552446ee79) | BPF_PROG_TYPE_SK_SKB
cgroup device manager | 4.15 | [`ebc614f68736`](https://github.com/torvalds/linux/commit/ebc614f687369f9df99828572b1d85a7c2de3d92) | BPF_PROG_TYPE_CGROUP_DEVICE
socket msg verdict | 4.17 | [`4f738adba30a`](https://github.com/torvalds/linux/commit/4f738adba30a7cfc006f605707e7aee847ffefa0) | BPF_PROG_TYPE_SK_MSG
Raw tracepoint | 4.17 | [`c4f6699dfcb8`](https://github.com/torvalds/linux/commit/c4f6699dfcb8558d138fe838f741b2c10f416cf9) | BPF_PROG_TYPE_RAW_TRACEPOINT
socket binding | 4.17 | [`4fbac77d2d09`](https://github.com/torvalds/linux/commit/4fbac77d2d092b475dda9eea66da674369665427) | BPF_PROG_TYPE_CGROUP_SOCK_ADDR
LWT seg6local | 4.18 | [`004d4b274e2a`](https://github.com/torvalds/linux/commit/004d4b274e2a1a895a0e5dc66158b90a7d463d44) | BPF_PROG_TYPE_LWT_SEG6LOCAL
lirc devices | 4.18 | [`f4364dcfc86d`](https://github.com/torvalds/linux/commit/f4364dcfc86df7c1ca47b256eaf6b6d0cdd0d936) | BPF_PROG_TYPE_LIRC_MODE2
lookup SO_REUSEPORT socket | 4.19 | [`2dbb9b9e6df6`](https://github.com/torvalds/linux/commit/2dbb9b9e6df67d444fbe425c7f6014858d337adf) | BPF_PROG_TYPE_SK_REUSEPORT
flow dissector | 4.20 | [`d58e468b1112`](https://github.com/torvalds/linux/commit/d58e468b1112dcd1d5193c0a89ff9f98b5a3e8b9) | BPF_PROG_TYPE_FLOW_DISSECTOR
cgroup sysctl | 5.2 | [`7b146cebe30c`](https://github.com/torvalds/linux/commit/7b146cebe30cb481b0f70d85779da938da818637) | BPF_PROG_TYPE_CGROUP_SYSCTL
writable raw tracepoints | 5.2 | [`9df1c28bb752`](https://github.com/torvalds/linux/commit/9df1c28bb75217b244257152ab7d788bb2a386d0) | BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE
cgroup getsockopt/setsockopt | 5.3 | [`0d01da6afc54`](https://github.com/torvalds/linux/commit/0d01da6afc5402f60325c5da31b22f7d56689b49) | BPF_PROG_TYPE_CGROUP_SOCKOPT
Tracing (BTF/BPF trampoline) | 5.5 | [`f1b9509c2fb0`](https://github.com/torvalds/linux/commit/f1b9509c2fb0ef4db8d22dac9aef8e856a5d81f6) | BPF_PROG_TYPE_TRACING
struct ops | 5.6 | [`27ae7997a661`](https://github.com/torvalds/linux/commit/27ae7997a66174cb8afd6a75b3989f5e0c1b9e5a) | BPF_PROG_TYPE_STRUCT_OPS
extensions | 5.6 | [`be8704ff07d2`](https://github.com/torvalds/linux/commit/be8704ff07d2374bcc5c675526f95e70c6459683) | BPF_PROG_TYPE_EXT
LSM | 5.7 | [`fc611f47f218`](https://github.com/torvalds/linux/commit/fc611f47f2188ade2b48ff6902d5cce8baac0c58) | BPF_PROG_TYPE_LSM
lookup listening socket | 5.9 | [`e9ddbb7707ff`](https://github.com/torvalds/linux/commit/e9ddbb7707ff5891616240026062b8c1e29864ca) | BPF_PROG_TYPE_SK_LOOKUP
Allow executing syscalls | 5.15 | [`79a7f8bdb159`](https://github.com/torvalds/linux/commit/79a7f8bdb159d9914b58740f3d31d602a6e4aca8) | BPF_PROG_TYPE_SYSCALL
## Maps (_a.k.a._ Tables, in BCC lingo)
### Map types
The list of map types supported in your kernel can be found in file
[`include/uapi/linux/bpf.h`](https://github.com/torvalds/linux/blob/master/include/uapi/linux/bpf.h):
git grep -W 'bpf_map_type {' include/uapi/linux/bpf.h
Map type | Kernel version | Commit | Enum
----------|----------------|--------|------
Hash | 3.19 | [`0f8e4bd8a1fc`](https://github.com/torvalds/linux/commit/0f8e4bd8a1fc8c4185f1630061d0a1f2d197a475) | BPF_MAP_TYPE_HASH
Array | 3.19 | [`28fbcfa08d8e`](https://github.com/torvalds/linux/commit/28fbcfa08d8ed7c5a50d41a0433aad222835e8e3) | BPF_MAP_TYPE_ARRAY
Prog array | 4.2 | [`04fd61ab36ec`](https://github.com/torvalds/linux/commit/04fd61ab36ec065e194ab5e74ae34a5240d992bb) | BPF_MAP_TYPE_PROG_ARRAY
Perf events | 4.3 | [`ea317b267e9d`](https://github.com/torvalds/linux/commit/ea317b267e9d03a8241893aa176fba7661d07579) | BPF_MAP_TYPE_PERF_EVENT_ARRAY
Per-CPU hash | 4.6 | [`824bd0ce6c7c`](https://github.com/torvalds/linux/commit/824bd0ce6c7c43a9e1e210abf124958e54d88342) | BPF_MAP_TYPE_PERCPU_HASH
Per-CPU array | 4.6 | [`a10423b87a7e`](https://github.com/torvalds/linux/commit/a10423b87a7eae75da79ce80a8d9475047a674ee) | BPF_MAP_TYPE_PERCPU_ARRAY
Stack trace | 4.6 | [`d5a3b1f69186`](https://github.com/torvalds/linux/commit/d5a3b1f691865be576c2bffa708549b8cdccda19) | BPF_MAP_TYPE_STACK_TRACE
cgroup array | 4.8 | [`4ed8ec521ed5`](https://github.com/torvalds/linux/commit/4ed8ec521ed57c4e207ad464ca0388776de74d4b) | BPF_MAP_TYPE_CGROUP_ARRAY
LRU hash | 4.10 | [`29ba732acbee`](https://github.com/torvalds/linux/commit/29ba732acbeece1e34c68483d1ec1f3720fa1bb3) [`3a08c2fd7634`](https://github.com/torvalds/linux/commit/3a08c2fd763450a927d1130de078d6f9e74944fb) | BPF_MAP_TYPE_LRU_HASH
LRU per-CPU hash | 4.10 | [`8f8449384ec3`](https://github.com/torvalds/linux/commit/8f8449384ec364ba2a654f11f94e754e4ff719e0) [`961578b63474`](https://github.com/torvalds/linux/commit/961578b63474d13ad0e2f615fcc2901c5197dda6) | BPF_MAP_TYPE_LRU_PERCPU_HASH
LPM trie (longest-prefix match) | 4.11 | [`b95a5c4db09b`](https://github.com/torvalds/linux/commit/b95a5c4db09bc7c253636cb84dc9b12c577fd5a0) | BPF_MAP_TYPE_LPM_TRIE
Array of maps | 4.12 | [`56f668dfe00d`](https://github.com/torvalds/linux/commit/56f668dfe00dcf086734f1c42ea999398fad6572) | BPF_MAP_TYPE_ARRAY_OF_MAPS
Hash of maps | 4.12 | [`bcc6b1b7ebf8`](https://github.com/torvalds/linux/commit/bcc6b1b7ebf857a9fe56202e2be3361131588c15) | BPF_MAP_TYPE_HASH_OF_MAPS
Netdevice references (array) | 4.14 | [`546ac1ffb70d`](https://github.com/torvalds/linux/commit/546ac1ffb70d25b56c1126940e5ec639c4dd7413) | BPF_MAP_TYPE_DEVMAP
Socket references (array) | 4.14 | [`174a79ff9515`](https://github.com/torvalds/linux/commit/174a79ff9515f400b9a6115643dafd62a635b7e6) | BPF_MAP_TYPE_SOCKMAP
CPU references | 4.15 | [`6710e1126934`](https://github.com/torvalds/linux/commit/6710e1126934d8b4372b4d2f9ae1646cd3f151bf) | BPF_MAP_TYPE_CPUMAP
AF_XDP socket (XSK) references | 4.18 | [`fbfc504a24f5`](https://github.com/torvalds/linux/commit/fbfc504a24f53f7ebe128ab55cb5dba634f4ece8) | BPF_MAP_TYPE_XSKMAP
Socket references (hashmap) | 4.18 | [`81110384441a`](https://github.com/torvalds/linux/commit/81110384441a59cff47430f20f049e69b98c17f4) | BPF_MAP_TYPE_SOCKHASH
cgroup storage | 4.19 | [`de9cbbaadba5`](https://github.com/torvalds/linux/commit/de9cbbaadba5adf88a19e46df61f7054000838f6) | BPF_MAP_TYPE_CGROUP_STORAGE
reuseport sockarray | 4.19 | [`5dc4c4b7d4e8`](https://github.com/torvalds/linux/commit/5dc4c4b7d4e8115e7cde96a030f98cb3ab2e458c) | BPF_MAP_TYPE_REUSEPORT_SOCKARRAY
percpu cgroup storage | 4.20 | [`b741f1630346`](https://github.com/torvalds/linux/commit/b741f1630346defcbc8cc60f1a2bdae8b3b0036f) | BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE
queue | 4.20 | [`f1a2e44a3aec`](https://github.com/torvalds/linux/commit/f1a2e44a3aeccb3ff18d3ccc0b0203e70b95bd92) | BPF_MAP_TYPE_QUEUE
stack | 4.20 | [`f1a2e44a3aec`](https://github.com/torvalds/linux/commit/f1a2e44a3aeccb3ff18d3ccc0b0203e70b95bd92) | BPF_MAP_TYPE_STACK
socket local storage | 5.2 | [`6ac99e8f23d4`](https://github.com/torvalds/linux/commit/6ac99e8f23d4b10258406ca0dd7bffca5f31da9d) | BPF_MAP_TYPE_SK_STORAGE
Netdevice references (hashmap) | 5.4 | [`6f9d451ab1a3`](https://github.com/torvalds/linux/commit/6f9d451ab1a33728adb72d7ff66a7b374d665176) | BPF_MAP_TYPE_DEVMAP_HASH
struct ops | 5.6 | [`85d33df357b6`](https://github.com/torvalds/linux/commit/85d33df357b634649ddbe0a20fd2d0fc5732c3cb) | BPF_MAP_TYPE_STRUCT_OPS
ring buffer | 5.8 | [`457f44363a88`](https://github.com/torvalds/linux/commit/457f44363a8894135c85b7a9afd2bd8196db24ab) | BPF_MAP_TYPE_RINGBUF
inode storage | 5.10 | [`8ea636848aca`](https://github.com/torvalds/linux/commit/8ea636848aca35b9f97c5b5dee30225cf2dd0fe6) | BPF_MAP_TYPE_INODE_STORAGE
task storage | 5.11 | [`4cf1bc1f1045`](https://github.com/torvalds/linux/commit/4cf1bc1f10452065a29d576fc5693fc4fab5b919) | BPF_MAP_TYPE_TASK_STORAGE
Bloom filter | 5.16 | [`9330986c0300`](https://github.com/torvalds/linux/commit/9330986c03006ab1d33d243b7cfe598a7a3c1baa) | BPF_MAP_TYPE_BLOOM_FILTER
user ringbuf | 6.1 | [`583c1f420173`](https://github.com/torvalds/linux/commit/583c1f420173f7d84413a1a1fbf5109d798b4faa) | BPF_MAP_TYPE_USER_RINGBUF
### Map userspace API
Some (but not all) of these *API features* translate to a subcommand beginning with `BPF_MAP_`.
The list of subcommands supported in your kernel can be found in file
[`include/uapi/linux/bpf.h`](https://github.com/torvalds/linux/blob/master/include/uapi/linux/bpf.h):
git grep -W 'bpf_cmd {' include/uapi/linux/bpf.h
Feature | Kernel version | Commit
--------|----------------|-------
Basic operations (lookup, update, delete, `GET_NEXT_KEY`) | 3.18 | [`db20fd2b0108`](https://github.com/torvalds/linux/commit/db20fd2b01087bdfbe30bce314a198eefedcc42e)
Pass flags to `UPDATE_ELEM` | 3.19 | [`3274f52073d8`](https://github.com/torvalds/linux/commit/3274f52073d88b62f3c5ace82ae9d48546232e72)
Pre-alloc map memory by default | 4.6 | [`6c9059817432`](https://github.com/torvalds/linux/commit/6c90598174322b8888029e40dd84a4eb01f56afe)
Pass `NULL` to `GET_NEXT_KEY` | 4.12 | [`8fe45924387b`](https://github.com/torvalds/linux/commit/8fe45924387be6b5c1be59a7eb330790c61d5d10)
Creation: select NUMA node | 4.14 | [`96eabe7a40aa`](https://github.com/torvalds/linux/commit/96eabe7a40aa17e613cf3db2c742ee8b1fc764d0)
Restrict access from syscall side | 4.15 | [`6e71b04a8224`](https://github.com/torvalds/linux/commit/6e71b04a82248ccf13a94b85cbc674a9fefe53f5)
Creation: specify map name | 4.15 | [`ad5b177bd73f`](https://github.com/torvalds/linux/commit/ad5b177bd73f5107d97c36f56395c4281fb6f089)
`LOOKUP_AND_DELETE_ELEM` | 4.20 | [`bd513cd08f10`](https://github.com/torvalds/linux/commit/bd513cd08f10cbe28856f99ae951e86e86803861)
Creation: `BPF_F_ZERO_SEED` | 5.0 | [`96b3b6c9091d`](https://github.com/torvalds/linux/commit/96b3b6c9091d23289721350e32c63cc8749686be)
`BPF_F_LOCK` flag for lookup / update | 5.1 | [`96049f3afd50`](https://github.com/torvalds/linux/commit/96049f3afd50fe8db69fa0068cdca822e747b1e4)
Restrict access from BPF side | 5.2 | [`591fe9888d78`](https://github.com/torvalds/linux/commit/591fe9888d7809d9ee5c828020b6c6ae27c37229)
`FREEZE` | 5.2 | [`87df15de441b`](https://github.com/torvalds/linux/commit/87df15de441bd4add7876ef584da8cabdd9a042a)
mmap() support for array maps | 5.5 | [`fc9702273e2e`](https://github.com/torvalds/linux/commit/fc9702273e2edb90400a34b3be76f7b08fa3344b)
`LOOKUP_BATCH` | 5.6 | [`cb4d03ab499d`](https://github.com/torvalds/linux/commit/cb4d03ab499d4c040f4ab6fd4389d2b49f42b5a5)
`UPDATE_BATCH`, `DELETE_BATCH` | 5.6 | [`aa2e93b8e58e`](https://github.com/torvalds/linux/commit/aa2e93b8e58e18442edfb2427446732415bc215e)
`LOOKUP_AND_DELETE_BATCH` | 5.6 | [`057996380a42`](https://github.com/torvalds/linux/commit/057996380a42bb64ccc04383cfa9c0ace4ea11f0)
`LOOKUP_AND_DELETE_ELEM` support for hash maps | 5.14 | [`3e87f192b405`](https://github.com/torvalds/linux/commit/3e87f192b405960c0fe83e0925bd0dadf4f8cf43)
## XDP
An approximate list of drivers or components supporting XDP programs for your
kernel can be retrieved with:
git grep -l XDP_SETUP_PROG drivers/
Feature / Driver | Kernel version | Commit
-----------------|----------------|-------
XDP core architecture | 4.8 | [`6a773a15a1e8`](https://github.com/torvalds/linux/commit/6a773a15a1e8874e5eccd2f29190c31085912c95)
Action: drop | 4.8 | [`6a773a15a1e8`](https://github.com/torvalds/linux/commit/6a773a15a1e8874e5eccd2f29190c31085912c95)
Action: pass on to stack | 4.8 | [`6a773a15a1e8`](https://github.com/torvalds/linux/commit/6a773a15a1e8874e5eccd2f29190c31085912c95)
Action: direct forwarding (on same port) | 4.8 | [`6ce96ca348a9`](https://github.com/torvalds/linux/commit/6ce96ca348a9e949f8c43f4d3e98db367d93cffd)
Direct packet data write | 4.8 | [`4acf6c0b84c9`](https://github.com/torvalds/linux/commit/4acf6c0b84c91243c705303cd9ff16421914150d)
Mellanox `mlx4` driver | 4.8 | [`47a38e155037`](https://github.com/torvalds/linux/commit/47a38e155037f417c5740e24ccae6482aedf4b68)
Mellanox `mlx5` driver | 4.9 | [`86994156c736`](https://github.com/torvalds/linux/commit/86994156c736978d113e7927455d4eeeb2128b9f)
Netronome `nfp` driver | 4.10 | [`ecd63a0217d5`](https://github.com/torvalds/linux/commit/ecd63a0217d5f1e8a92f7516f5586d1177b95de2)
QLogic (Cavium) `qed*` drivers | 4.10 | [`496e05170958`](https://github.com/torvalds/linux/commit/496e051709588f832d7a6a420f44f8642b308a87)
`virtio_net` driver | 4.10 | [`f600b6905015`](https://github.com/torvalds/linux/commit/f600b690501550b94e83e07295d9c8b9c4c39f4e)
Broadcom `bnxt_en` driver | 4.11 | [`c6d30e8391b8`](https://github.com/torvalds/linux/commit/c6d30e8391b85e00eb544e6cf047ee0160ee9938)
Intel `ixgbe*` drivers | 4.12 | [`924708081629`](https://github.com/torvalds/linux/commit/9247080816297de4e31abb684939c0e53e3a8a67)
Cavium `thunderx` driver | 4.12 | [`05c773f52b96`](https://github.com/torvalds/linux/commit/05c773f52b96ef3fbc7d9bfa21caadc6247ef7a8)
Generic XDP | 4.12 | [`b5cdae3291f7`](https://github.com/torvalds/linux/commit/b5cdae3291f7be7a34e75affe4c0ec1f7f328b64)
Intel `i40e` driver | 4.13 | [`0c8493d90b6b`](https://github.com/torvalds/linux/commit/0c8493d90b6bb0f5c4fe9217db8f7203f24c0f28)
Action: redirect | 4.14 | [`6453073987ba`](https://github.com/torvalds/linux/commit/6453073987ba392510ab6c8b657844a9312c67f7)
Support for tap | 4.14 | [`761876c857cb`](https://github.com/torvalds/linux/commit/761876c857cb2ef8489fbee01907151da902af91)
Support for veth | 4.14 | [`d445516966dc`](https://github.com/torvalds/linux/commit/d445516966dcb2924741b13b27738b54df2af01a)
Intel `ixgbevf` driver | 4.17 | [`c7aec59657b6`](https://github.com/torvalds/linux/commit/c7aec59657b60f3a29fc7d3274ebefd698879301)
Freescale `dpaa2` driver | 5.0 | [`7e273a8ebdd3`](https://github.com/torvalds/linux/commit/7e273a8ebdd3b83f94eb8b49fc8ee61464f47cc2)
Socionext `netsec` driver | 5.3 | [`ba2b232108d3`](https://github.com/torvalds/linux/commit/ba2b232108d3c2951bab02930a00f23b0cffd5af)
TI `cpsw` driver | 5.3 | [`9ed4050c0d75`](https://github.com/torvalds/linux/commit/9ed4050c0d75768066a07cf66eef4f8dc9d79b52)
Intel `ice` driver |5.5| [`efc2214b6047`](https://github.com/torvalds/linux/commit/efc2214b6047b6f5b4ca53151eba62521b9452d6)
Solarflare `sfc` driver | 5.5 | [`eb9a36be7f3e`](https://github.com/torvalds/linux/commit/eb9a36be7f3ec414700af9a616f035eda1f1e63e)
Marvell `mvneta` driver | 5.5 | [`0db51da7a8e9`](https://github.com/torvalds/linux/commit/0db51da7a8e99f0803ec3a8e25c1a66234a219cb)
Microsoft `hv_netvsc` driver | 5.6 | [`351e1581395f`](https://github.com/torvalds/linux/commit/351e1581395fcc7fb952bbd7dda01238f69968fd)
Amazon `ena` driver | 5.6 | [`838c93dc5449`](https://github.com/torvalds/linux/commit/838c93dc5449e5d6378bae117b0a65a122cf7361)
`xen-netfront` driver | 5.9 | [`6c5aa6fc4def`](https://github.com/torvalds/linux/commit/6c5aa6fc4defc2a0977a2c59e4710d50fa1e834c)
Marvell `mvpp2` driver | 5.9 | [`07dd0a7aae7f`](https://github.com/torvalds/linux/commit/07dd0a7aae7f72af7cec18909581c2bb570edddc)
Intel `igb` driver | 5.10 | [`9cbc948b5a20`](https://github.com/torvalds/linux/commit/9cbc948b5a20c9c054d9631099c0426c16da546b)
Freescale `dpaa` driver | 5.11 | [`86c0c196cbe4`](https://github.com/torvalds/linux/commit/86c0c196cbe48f844721783d9162e46bc35c0c5a)
Intel `igc` driver | 5.13 | [`26575105d6ed`](https://github.com/torvalds/linux/commit/26575105d6ed8e2a8e43bd008fc7d98b75b90d5c)
Freescale `enetc` driver | 5.13 | [`d1b15102dd16`](https://github.com/torvalds/linux/commit/d1b15102dd16adc17fd5e4db8a485e6459f98906)
STMicro `stmmac` driver | 5.13 | [`5fabb01207a2`](https://github.com/torvalds/linux/commit/5fabb01207a2d3439a6abe1d08640de9c942945f)
`bonding` driver | 5.15 | [`9e2ee5c7e7c3`](https://github.com/torvalds/linux/commit/9e2ee5c7e7c35d195e2aa0692a7241d47a433d1e)
Marvell `otx2` | 5.16 | [`06059a1a9a4a`](https://github.com/torvalds/linux/commit/06059a1a9a4a58f139352c65b02989ea6077091a)
Microsoft `mana` driver | 5.17 | [`ed5356b53f07`](https://github.com/torvalds/linux/commit/ed5356b53f070dea5dff5a01b740561cb8222199)
Fungible `fun` driver | 5.18 | [`db37bc177dae`](https://github.com/torvalds/linux/commit/db37bc177dae89cef6fc37bdbe6b223929f70245)
Aquantia `atlantic` driver
gitextract_u8ikdlvh/
├── .clang-format
├── .dockerignore
├── .github/
│ ├── actions/
│ │ └── build-container/
│ │ └── action.yml
│ ├── scripts/
│ │ └── check_links.py
│ └── workflows/
│ ├── bcc-test.yml
│ ├── check_links.yml
│ ├── publish-build-containers.yml
│ └── publish.yml
├── .gitignore
├── .gitmodules
├── .travis.yml
├── CMakeLists.txt
├── CODEOWNERS
├── CONTRIBUTING-SCRIPTS.md
├── FAQ.txt
├── INSTALL.md
├── LICENSE.txt
├── LINKS.md
├── QUICKSTART.md
├── README.md
├── SPECS/
│ ├── Dockerfile.fedora
│ ├── bcc+clang.spec
│ └── bcc.spec
├── cmake/
│ ├── CmakeUninstall.cmake.in
│ ├── FindCompilerFlag.cmake
│ ├── FindKernelHeaders.cmake
│ ├── FindLibBpf.cmake
│ ├── FindLibDebuginfod.cmake
│ ├── FindLibElf.cmake
│ ├── FindLibLzma.cmake
│ ├── FindLuaJIT.cmake
│ ├── GetGitRevisionDescription.cmake
│ ├── GetGitRevisionDescription.cmake.in
│ ├── bump_version.cmake
│ ├── clang_libs.cmake
│ ├── static_libstdc++.cmake
│ └── version.cmake
├── debian/
│ ├── bcc-lua.install
│ ├── bcc-tools.install
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── docs
│ ├── libbcc-examples.install
│ ├── libbcc.install
│ ├── python-bcc.install
│ ├── rules
│ └── source/
│ └── format
├── docker/
│ ├── Dockerfile.debian
│ ├── Dockerfile.ubuntu
│ └── build/
│ ├── Dockerfile.fedora
│ └── Dockerfile.ubuntu
├── docs/
│ ├── kernel-versions.md
│ ├── kernel_config.md
│ ├── reference_guide.md
│ ├── special_filtering.md
│ ├── tutorial.md
│ └── tutorial_bcc_python_developer.md
├── examples/
│ ├── CMakeLists.txt
│ ├── cgroupid/
│ │ ├── Dockerfile
│ │ ├── Makefile
│ │ └── cgroupid.c
│ ├── cpp/
│ │ ├── CGroupTest.cc
│ │ ├── CMakeLists.txt
│ │ ├── CPUDistribution.cc
│ │ ├── FollyRequestContextSwitch.cc
│ │ ├── HelloWorld.cc
│ │ ├── KFuncExample.cc
│ │ ├── KModRetExample.cc
│ │ ├── LLCStat.cc
│ │ ├── RandomRead.cc
│ │ ├── RecordMySQLQuery.cc
│ │ ├── SkLocalStorageIterator.cc
│ │ ├── TCPSendStack.cc
│ │ ├── TaskIterator.cc
│ │ ├── UseExternalMap.cc
│ │ └── pyperf/
│ │ ├── CMakeLists.txt
│ │ ├── Py36Offsets.cc
│ │ ├── PyPerf.cc
│ │ ├── PyPerfBPFProgram.cc
│ │ ├── PyPerfDefaultPrinter.cc
│ │ ├── PyPerfDefaultPrinter.h
│ │ ├── PyPerfLoggingHelper.cc
│ │ ├── PyPerfLoggingHelper.h
│ │ ├── PyPerfSampleProcessor.h
│ │ ├── PyPerfType.h
│ │ ├── PyPerfUtil.cc
│ │ └── PyPerfUtil.h
│ ├── hello_world.py
│ ├── local_storage/
│ │ ├── inode_storage.py
│ │ └── task_storage.py
│ ├── lua/
│ │ ├── CMakeLists.txt
│ │ ├── bashreadline.c
│ │ ├── bashreadline.lua
│ │ ├── kprobe-latency.lua
│ │ ├── kprobe-write.lua
│ │ ├── memleak.lua
│ │ ├── offcputime.lua
│ │ ├── sock-parse-dns.lua
│ │ ├── sock-parse-http.lua
│ │ ├── sock-proto.lua
│ │ ├── sock-protolen.lua
│ │ ├── strlen_count.lua
│ │ ├── task_switch.lua
│ │ ├── tracepoint-offcputime.lua
│ │ ├── uprobe-readline-perf.lua
│ │ ├── uprobe-readline.lua
│ │ ├── uprobe-tailkt.lua
│ │ └── usdt_ruby.lua
│ ├── networking/
│ │ ├── CMakeLists.txt
│ │ ├── distributed_bridge/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── main.py
│ │ │ ├── tunnel.c
│ │ │ ├── tunnel.py
│ │ │ ├── tunnel_mesh.c
│ │ │ └── tunnel_mesh.py
│ │ ├── dns_matching/
│ │ │ ├── dns_matching.c
│ │ │ └── dns_matching.py
│ │ ├── http_filter/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── http-parse-complete.c
│ │ │ ├── http-parse-complete.py
│ │ │ ├── http-parse-simple.c
│ │ │ └── http-parse-simple.py
│ │ ├── neighbor_sharing/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.txt
│ │ │ ├── tc_neighbor_sharing.c
│ │ │ └── tc_neighbor_sharing.py
│ │ ├── net_monitor.py
│ │ ├── simple_tc.py
│ │ ├── simulation.py
│ │ ├── sockmap.py
│ │ ├── tc_perf_event.py
│ │ ├── tcp_mon_block/
│ │ │ ├── README.md
│ │ │ └── src/
│ │ │ ├── allow_list.json
│ │ │ ├── http_client.py
│ │ │ ├── tcp_mon_block.c
│ │ │ ├── tcp_mon_block.py
│ │ │ └── web_server.py
│ │ ├── tunnel_monitor/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ ├── main.py
│ │ │ ├── monitor.c
│ │ │ ├── monitor.py
│ │ │ ├── setup.sh
│ │ │ └── traffic.sh
│ │ ├── vlan_filter/
│ │ │ ├── README.md
│ │ │ ├── data-plane-tracing.c
│ │ │ ├── data-plane-tracing.py
│ │ │ ├── test_setup.sh
│ │ │ └── test_traffic.sh
│ │ ├── vlan_learning/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.txt
│ │ │ ├── vlan_learning.c
│ │ │ └── vlan_learning.py
│ │ └── xdp/
│ │ ├── CMakeLists.txt
│ │ ├── xdp_drop_count.py
│ │ ├── xdp_macswap_count.py
│ │ ├── xdp_redirect_cpu.py
│ │ └── xdp_redirect_map.py
│ ├── perf/
│ │ └── ipc.py
│ ├── ringbuf/
│ │ ├── ringbuf_output.py
│ │ └── ringbuf_submit.py
│ ├── tracing/
│ │ ├── CMakeLists.txt
│ │ ├── biolatpcts.py
│ │ ├── biolatpcts_example.txt
│ │ ├── bitehist.py
│ │ ├── bitehist_example.txt
│ │ ├── dddos.py
│ │ ├── dddos_example.txt
│ │ ├── disksnoop.py
│ │ ├── disksnoop_example.txt
│ │ ├── hello_fields.py
│ │ ├── hello_perf_output.py
│ │ ├── hello_perf_output_using_ns.py
│ │ ├── kvm_hypercall.py
│ │ ├── kvm_hypercall.txt
│ │ ├── lbr.py
│ │ ├── mallocstacks.py
│ │ ├── mysqld_query.py
│ │ ├── mysqld_query_example.txt
│ │ ├── nflatency.py
│ │ ├── nodejs_http_server.py
│ │ ├── nodejs_http_server_example.txt
│ │ ├── setuid_monitor.py
│ │ ├── setuid_monitor_example.txt
│ │ ├── stack_buildid_example.py
│ │ ├── stacksnoop.py
│ │ ├── stacksnoop_example.txt
│ │ ├── strlen_count.py
│ │ ├── strlen_hist.py
│ │ ├── strlen_hist_ifunc.py
│ │ ├── strlen_snoop.py
│ │ ├── sync_timing.py
│ │ ├── task_switch.c
│ │ ├── task_switch.py
│ │ ├── tcpv4connect.py
│ │ ├── tcpv4connect_example.txt
│ │ ├── trace_fields.py
│ │ ├── trace_perf_output.py
│ │ ├── undump.py
│ │ ├── undump_example.txt
│ │ ├── urandomread-explicit.py
│ │ ├── urandomread.py
│ │ ├── urandomread_example.txt
│ │ ├── vfsreadlat.c
│ │ ├── vfsreadlat.py
│ │ └── vfsreadlat_example.txt
│ └── usdt_sample/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── scripts/
│ │ ├── bpf_text_shared.c
│ │ ├── lat_avg.py
│ │ ├── lat_dist.py
│ │ └── latency.py
│ ├── usdt_sample.md
│ ├── usdt_sample.sh
│ ├── usdt_sample_app1/
│ │ ├── CMakeLists.txt
│ │ └── main.cpp
│ └── usdt_sample_lib1/
│ ├── CMakeLists.txt
│ ├── include/
│ │ └── usdt_sample_lib1/
│ │ └── lib1.h
│ └── src/
│ ├── lib1.cpp
│ ├── lib1_sdt.d
│ └── lib1_sdt.h
├── introspection/
│ ├── CMakeLists.txt
│ ├── bps.c
│ └── bps_example.txt
├── libbpf-tools/
│ ├── .gitignore
│ ├── Makefile
│ ├── Makefile.btfgen
│ ├── README.md
│ ├── arm64/
│ │ └── vmlinux_614.h
│ ├── bashreadline.bpf.c
│ ├── bashreadline.c
│ ├── bashreadline.h
│ ├── bindsnoop.bpf.c
│ ├── bindsnoop.c
│ ├── bindsnoop.h
│ ├── biolatency.bpf.c
│ ├── biolatency.c
│ ├── biolatency.h
│ ├── biopattern.bpf.c
│ ├── biopattern.c
│ ├── biopattern.h
│ ├── biosnoop.bpf.c
│ ├── biosnoop.c
│ ├── biosnoop.h
│ ├── biostacks.bpf.c
│ ├── biostacks.c
│ ├── biostacks.h
│ ├── biotop.bpf.c
│ ├── biotop.c
│ ├── biotop.h
│ ├── bitesize.bpf.c
│ ├── bitesize.c
│ ├── bitesize.h
│ ├── bits.bpf.h
│ ├── blk_types.h
│ ├── btf_helpers.c
│ ├── btf_helpers.h
│ ├── cachestat.bpf.c
│ ├── cachestat.c
│ ├── capable.bpf.c
│ ├── capable.c
│ ├── capable.h
│ ├── compat.bpf.h
│ ├── compat.c
│ ├── compat.h
│ ├── core_fixes.bpf.h
│ ├── cpudist.bpf.c
│ ├── cpudist.c
│ ├── cpudist.h
│ ├── cpufreq.bpf.c
│ ├── cpufreq.c
│ ├── cpufreq.h
│ ├── drsnoop.bpf.c
│ ├── drsnoop.c
│ ├── drsnoop.h
│ ├── drsnoop_example.txt
│ ├── errno_helpers.c
│ ├── errno_helpers.h
│ ├── execsnoop.bpf.c
│ ├── execsnoop.c
│ ├── execsnoop.h
│ ├── exitsnoop.bpf.c
│ ├── exitsnoop.c
│ ├── exitsnoop.h
│ ├── filelife.bpf.c
│ ├── filelife.c
│ ├── filelife.h
│ ├── filetop.bpf.c
│ ├── filetop.c
│ ├── filetop.h
│ ├── fsdist.bpf.c
│ ├── fsdist.c
│ ├── fsdist.h
│ ├── fsslower.bpf.c
│ ├── fsslower.c
│ ├── fsslower.h
│ ├── funclatency.bpf.c
│ ├── funclatency.c
│ ├── funclatency.h
│ ├── futexctn.bpf.c
│ ├── futexctn.c
│ ├── futexctn.h
│ ├── gethostlatency.bpf.c
│ ├── gethostlatency.c
│ ├── gethostlatency.h
│ ├── hardirqs.bpf.c
│ ├── hardirqs.c
│ ├── hardirqs.h
│ ├── ioctl_names.h
│ ├── javagc.bpf.c
│ ├── javagc.c
│ ├── javagc.h
│ ├── kernel.config
│ ├── klockstat.bpf.c
│ ├── klockstat.c
│ ├── klockstat.h
│ ├── ksnoop.bpf.c
│ ├── ksnoop.c
│ ├── ksnoop.h
│ ├── llcstat.bpf.c
│ ├── llcstat.c
│ ├── llcstat.h
│ ├── loongarch/
│ │ └── vmlinux_614.h
│ ├── map_helpers.c
│ ├── map_helpers.h
│ ├── maps.bpf.h
│ ├── mdflush.bpf.c
│ ├── mdflush.c
│ ├── mdflush.h
│ ├── memleak.bpf.c
│ ├── memleak.c
│ ├── memleak.h
│ ├── mountsnoop.bpf.c
│ ├── mountsnoop.c
│ ├── mountsnoop.h
│ ├── numamove.bpf.c
│ ├── numamove.c
│ ├── offcputime.bpf.c
│ ├── offcputime.c
│ ├── offcputime.h
│ ├── oomkill.bpf.c
│ ├── oomkill.c
│ ├── oomkill.h
│ ├── opensnoop.bpf.c
│ ├── opensnoop.c
│ ├── opensnoop.h
│ ├── path_helpers.bpf.h
│ ├── path_helpers.c
│ ├── path_helpers.h
│ ├── powerpc/
│ │ └── vmlinux_614.h
│ ├── profile.bpf.c
│ ├── profile.c
│ ├── profile.h
│ ├── readahead.bpf.c
│ ├── readahead.c
│ ├── readahead.h
│ ├── riscv/
│ │ └── vmlinux_614.h
│ ├── runqlat.bpf.c
│ ├── runqlat.c
│ ├── runqlat.h
│ ├── runqlen.bpf.c
│ ├── runqlen.c
│ ├── runqlen.h
│ ├── runqslower.bpf.c
│ ├── runqslower.c
│ ├── runqslower.h
│ ├── runqslower_example.txt
│ ├── s390/
│ │ └── vmlinux_614.h
│ ├── sigsnoop.bpf.c
│ ├── sigsnoop.c
│ ├── sigsnoop.h
│ ├── sigsnoop_example.txt
│ ├── slabratetop.bpf.c
│ ├── slabratetop.c
│ ├── slabratetop.h
│ ├── softirqs.bpf.c
│ ├── softirqs.c
│ ├── softirqs.h
│ ├── solisten.bpf.c
│ ├── solisten.c
│ ├── solisten.h
│ ├── stat.h
│ ├── statsnoop.bpf.c
│ ├── statsnoop.c
│ ├── statsnoop.h
│ ├── syncsnoop.bpf.c
│ ├── syncsnoop.c
│ ├── syncsnoop.h
│ ├── syscall_helpers.c
│ ├── syscall_helpers.h
│ ├── syscount.bpf.c
│ ├── syscount.c
│ ├── syscount.h
│ ├── tcpconnect.bpf.c
│ ├── tcpconnect.c
│ ├── tcpconnect.h
│ ├── tcpconnlat.bpf.c
│ ├── tcpconnlat.c
│ ├── tcpconnlat.h
│ ├── tcplife.bpf.c
│ ├── tcplife.c
│ ├── tcplife.h
│ ├── tcppktlat.bpf.c
│ ├── tcppktlat.c
│ ├── tcppktlat.h
│ ├── tcppktlat_example.txt
│ ├── tcprtt.bpf.c
│ ├── tcprtt.c
│ ├── tcprtt.h
│ ├── tcpstates.bpf.c
│ ├── tcpstates.c
│ ├── tcpstates.h
│ ├── tcpsynbl.bpf.c
│ ├── tcpsynbl.c
│ ├── tcpsynbl.h
│ ├── tcptop.bpf.c
│ ├── tcptop.c
│ ├── tcptop.h
│ ├── tcptop_example.txt
│ ├── tcptracer.bpf.c
│ ├── tcptracer.c
│ ├── tcptracer.h
│ ├── trace_helpers.c
│ ├── trace_helpers.h
│ ├── uprobe_helpers.c
│ ├── uprobe_helpers.h
│ ├── vfsstat.bpf.c
│ ├── vfsstat.c
│ ├── vfsstat.h
│ ├── wakeuptime.bpf.c
│ ├── wakeuptime.c
│ ├── wakeuptime.h
│ └── x86/
│ └── vmlinux_614.h
├── man/
│ ├── CMakeLists.txt
│ └── man8/
│ ├── CMakeLists.txt
│ ├── argdist.8
│ ├── bashreadline.8
│ ├── bindsnoop.8
│ ├── biolatency.8
│ ├── biolatpcts.8
│ ├── biopattern.8
│ ├── biosnoop.8
│ ├── biotop.8
│ ├── bitesize.8
│ ├── bpflist.8
│ ├── bps.8
│ ├── btrfsdist.8
│ ├── btrfsslower.8
│ ├── cachestat.8
│ ├── cachetop.8
│ ├── capable.8
│ ├── compactsnoop.8
│ ├── cpudist.8
│ ├── cpuunclaimed.8
│ ├── criticalstat.8
│ ├── dbslower.8
│ ├── dbstat.8
│ ├── dcsnoop.8
│ ├── dcstat.8
│ ├── deadlock.8
│ ├── dirtop.8
│ ├── drsnoop.8
│ ├── execsnoop.8
│ ├── exitsnoop.8
│ ├── ext4dist.8
│ ├── ext4slower.8
│ ├── f2fsslower.8
│ ├── filegone.8
│ ├── filelife.8
│ ├── fileslower.8
│ ├── filetop.8
│ ├── funccount.8
│ ├── funcinterval.8
│ ├── funclatency.8
│ ├── funcslower.8
│ ├── gethostlatency.8
│ ├── hardirqs.8
│ ├── inject.8
│ ├── killsnoop.8
│ ├── klockstat.8
│ ├── ksnoop.8
│ ├── kvmexit.8
│ ├── llcstat.8
│ ├── mdflush.8
│ ├── memleak.8
│ ├── mountsnoop.8
│ ├── mysqld_qslower.8
│ ├── netqtop.8
│ ├── nfsdist.8
│ ├── nfsslower.8
│ ├── numasched.8
│ ├── offcputime.8
│ ├── offwaketime.8
│ ├── oomkill.8
│ ├── opensnoop.8
│ ├── pidpersec.8
│ ├── ppchcalls.8
│ ├── profile.8
│ ├── rdmaucma.8
│ ├── readahead.8
│ ├── reset-trace.8
│ ├── runqlat.8
│ ├── runqlen.8
│ ├── runqslower.8
│ ├── shmsnoop.8
│ ├── slabratetop.8
│ ├── sofdsnoop.8
│ ├── softirqs.8
│ ├── softirqslower.8
│ ├── solisten.8
│ ├── spfdsnoop.8
│ ├── sslsniff.8
│ ├── stackcount.8
│ ├── statsnoop.8
│ ├── swapin.8
│ ├── syncsnoop.8
│ ├── syscount.8
│ ├── tcpaccept.8
│ ├── tcpcong.8
│ ├── tcpconnect.8
│ ├── tcpconnlat.8
│ ├── tcpdrop.8
│ ├── tcplife.8
│ ├── tcpretrans.8
│ ├── tcprtt.8
│ ├── tcpstates.8
│ ├── tcpsubnet.8
│ ├── tcpsynbl.8
│ ├── tcptop.8
│ ├── tcptracer.8
│ ├── threadsnoop.8
│ ├── tplist.8
│ ├── trace.8
│ ├── ttysnoop.8
│ ├── ucalls.8
│ ├── uflow.8
│ ├── ugc.8
│ ├── uobjnew.8
│ ├── ustat.8
│ ├── uthreads.8
│ ├── vfscount.8
│ ├── vfsstat.8
│ ├── virtiostat.8
│ ├── wakeuptime.8
│ ├── wqlat.8
│ ├── xfsdist.8
│ ├── xfsslower.8
│ ├── zfsdist.8
│ └── zfsslower.8
├── scripts/
│ ├── README.md
│ ├── bpf_demo.ks.erb
│ ├── build-deb.sh
│ ├── build-deb.sh.in
│ ├── build-release-rpm.sh
│ ├── build-rpm.sh
│ ├── build_bpf_demo.sh
│ ├── c-style-check.sh
│ ├── check-helpers.sh
│ ├── docker/
│ │ ├── auth.sh
│ │ ├── build.sh
│ │ └── push.sh
│ ├── git-clang-format
│ ├── git-tag.sh
│ └── py-style-check.sh
├── snap/
│ ├── README.md
│ ├── local/
│ │ └── bcc-wrapper
│ └── snapcraft.yaml
├── src/
│ ├── CMakeLists.txt
│ ├── cc/
│ │ ├── CMakeLists.txt
│ │ ├── README
│ │ ├── api/
│ │ │ ├── BPF.cc
│ │ │ ├── BPF.h
│ │ │ ├── BPFTable.cc
│ │ │ ├── BPFTable.h
│ │ │ └── CMakeLists.txt
│ │ ├── bcc_btf.cc
│ │ ├── bcc_btf.h
│ │ ├── bcc_common.cc
│ │ ├── bcc_common.h
│ │ ├── bcc_debug.cc
│ │ ├── bcc_debug.h
│ │ ├── bcc_elf.c
│ │ ├── bcc_elf.h
│ │ ├── bcc_exception.h
│ │ ├── bcc_libbpf_inc.h
│ │ ├── bcc_perf_map.c
│ │ ├── bcc_perf_map.h
│ │ ├── bcc_proc.c
│ │ ├── bcc_proc.h
│ │ ├── bcc_syms.cc
│ │ ├── bcc_syms.h
│ │ ├── bcc_usdt.h
│ │ ├── bcc_version.h.in
│ │ ├── bcc_zip.c
│ │ ├── bcc_zip.h
│ │ ├── bpf_module.cc
│ │ ├── bpf_module.h
│ │ ├── bpf_module_rw_engine.cc
│ │ ├── bpf_module_rw_engine_disabled.cc
│ │ ├── bpffs_table.cc
│ │ ├── clang/
│ │ │ └── include/
│ │ │ └── stdarg.h
│ │ ├── common.cc
│ │ ├── common.h
│ │ ├── compat/
│ │ │ └── linux/
│ │ │ └── virtual_bpf.h
│ │ ├── export/
│ │ │ ├── bpf_workaround.h
│ │ │ ├── footer.h
│ │ │ ├── helpers.h
│ │ │ └── proto.h
│ │ ├── exported_files.cc
│ │ ├── exported_files.h
│ │ ├── file_desc.h
│ │ ├── frontends/
│ │ │ ├── CMakeLists.txt
│ │ │ └── clang/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── arch_helper.h
│ │ │ ├── b_frontend_action.cc
│ │ │ ├── b_frontend_action.h
│ │ │ ├── frontend_action_common.h
│ │ │ ├── kbuild_helper.cc
│ │ │ ├── kbuild_helper.h
│ │ │ ├── loader.cc
│ │ │ ├── loader.h
│ │ │ ├── tp_frontend_action.cc
│ │ │ └── tp_frontend_action.h
│ │ ├── json_map_decl_visitor.cc
│ │ ├── libbcc.pc.in
│ │ ├── libbpf.c
│ │ ├── libbpf.h
│ │ ├── link_all.cc
│ │ ├── perf_reader.c
│ │ ├── perf_reader.h
│ │ ├── setns.h
│ │ ├── shared_table.cc
│ │ ├── syms.h
│ │ ├── table_desc.h
│ │ ├── table_storage.cc
│ │ ├── table_storage.h
│ │ ├── table_storage_impl.h
│ │ ├── usdt/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── usdt.cc
│ │ │ └── usdt_args.cc
│ │ ├── usdt.h
│ │ └── vendor/
│ │ ├── optional.hpp
│ │ └── tinyformat.hpp
│ ├── lua/
│ │ ├── .busted
│ │ ├── .luacheckrc
│ │ ├── CMakeLists.txt
│ │ ├── README.md
│ │ ├── bcc/
│ │ │ ├── bpf.lua
│ │ │ ├── init.lua
│ │ │ ├── libbcc.lua
│ │ │ ├── run.lua
│ │ │ ├── sym.lua
│ │ │ ├── table.lua
│ │ │ ├── tracerpipe.lua
│ │ │ ├── usdt.lua
│ │ │ └── vendor/
│ │ │ ├── argparse.lua
│ │ │ ├── helpers.lua
│ │ │ ├── json.lua
│ │ │ ├── middleclass.lua
│ │ │ └── posix.lua
│ │ ├── bcc-probe
│ │ ├── bpf/
│ │ │ ├── bpf.lua
│ │ │ ├── builtins.lua
│ │ │ ├── cdef.lua
│ │ │ ├── elf.lua
│ │ │ ├── init.lua
│ │ │ ├── ljbytecode.lua
│ │ │ ├── proto.lua
│ │ │ └── spec/
│ │ │ ├── README.md
│ │ │ ├── codegen_spec.lua
│ │ │ ├── compile_spec.lua
│ │ │ ├── decoder_spec.lua
│ │ │ ├── elf_spec.lua
│ │ │ └── helper.lua
│ │ ├── bpf-scm-1.rockspec
│ │ ├── squishy
│ │ └── src/
│ │ ├── main.c
│ │ └── squish.lua
│ └── python/
│ ├── CMakeLists.txt
│ ├── bcc/
│ │ ├── __init__.py
│ │ ├── containers.py
│ │ ├── disassembler.py
│ │ ├── exec.py
│ │ ├── libbcc.py
│ │ ├── perf.py
│ │ ├── syscall.py
│ │ ├── table.py
│ │ ├── tcp.py
│ │ ├── usdt.py
│ │ ├── utils.py
│ │ └── version.py.in
│ └── setup.py.in
├── tests/
│ ├── CMakeLists.txt
│ ├── cc/
│ │ ├── CMakeLists.txt
│ │ ├── catch.hpp
│ │ ├── debuginfo_test_lib.cc
│ │ ├── dummy_proc_map.txt
│ │ ├── test_array_table.cc
│ │ ├── test_bpf_table.cc
│ │ ├── test_c_api.cc
│ │ ├── test_cg_storage.cc
│ │ ├── test_hash_table.cc
│ │ ├── test_libbcc.cc
│ │ ├── test_map_in_map.cc
│ │ ├── test_parse_tracepoint.cc
│ │ ├── test_perf_event.cc
│ │ ├── test_pinned_table.cc
│ │ ├── test_prog_table.cc
│ │ ├── test_queuestack_table.cc
│ │ ├── test_shared_table.cc
│ │ ├── test_sk_storage.cc
│ │ ├── test_sock_table.cc
│ │ ├── test_static.c
│ │ ├── test_usdt_args.cc
│ │ ├── test_usdt_probes.cc
│ │ ├── test_zip.cc
│ │ ├── usdt_test_lib.cc
│ │ └── utils.cc
│ ├── lua/
│ │ ├── .busted
│ │ ├── .luacheckrc
│ │ ├── CMakeLists.txt
│ │ ├── luaunit.lua
│ │ ├── test_clang.lua
│ │ ├── test_dump.lua
│ │ ├── test_helper.lua
│ │ ├── test_standalone.sh
│ │ └── test_uprobes.lua
│ ├── python/
│ │ ├── CMakeLists.txt
│ │ ├── dummy.cc
│ │ ├── include/
│ │ │ └── folly/
│ │ │ └── tracing/
│ │ │ ├── StaticTracepoint-ELFx86.h
│ │ │ └── StaticTracepoint.h
│ │ ├── test_array.py
│ │ ├── test_attach_perf_event.py
│ │ ├── test_bpf_log.py
│ │ ├── test_brb.c
│ │ ├── test_brb.py
│ │ ├── test_brb2.c
│ │ ├── test_brb2.py
│ │ ├── test_call1.c
│ │ ├── test_call1.py
│ │ ├── test_clang.py
│ │ ├── test_clang_complex.c
│ │ ├── test_debuginfo.py
│ │ ├── test_disassembler.py
│ │ ├── test_dump_func.py
│ │ ├── test_flags.py
│ │ ├── test_histogram.py
│ │ ├── test_license.py
│ │ ├── test_lpm_trie.py
│ │ ├── test_lru.py
│ │ ├── test_map_batch_ops.py
│ │ ├── test_map_in_map.py
│ │ ├── test_percpu.py
│ │ ├── test_perf_event.py
│ │ ├── test_probe_count.py
│ │ ├── test_queuestack.py
│ │ ├── test_ringbuf.py
│ │ ├── test_rlimit.py
│ │ ├── test_shared_table.py
│ │ ├── test_stackid.py
│ │ ├── test_stat1.c
│ │ ├── test_stat1.py
│ │ ├── test_tools_memleak.py
│ │ ├── test_tools_memleak_leaker_app.c
│ │ ├── test_tools_smoke.py
│ │ ├── test_trace2.c
│ │ ├── test_trace2.py
│ │ ├── test_trace3.c
│ │ ├── test_trace3.py
│ │ ├── test_trace4.py
│ │ ├── test_trace_maxactive.py
│ │ ├── test_tracepoint.py
│ │ ├── test_uprobes.py
│ │ ├── test_uprobes2.py
│ │ ├── test_usdt.py
│ │ ├── test_usdt2.py
│ │ ├── test_usdt3.py
│ │ ├── test_utils.py
│ │ ├── test_xlate1.c
│ │ ├── test_xlate1.py
│ │ └── utils.py
│ └── wrapper.sh.in
└── tools/
├── CMakeLists.txt
├── argdist.py
├── argdist_example.txt
├── bashreadline.py
├── bashreadline_example.txt
├── bindsnoop.py
├── bindsnoop_example.txt
├── biolatency.py
├── biolatency_example.txt
├── biolatpcts.py
├── biolatpcts_example.txt
├── biopattern.py
├── biopattern_example.txt
├── biosnoop.lua
├── biosnoop.py
├── biosnoop_example.txt
├── biotop.py
├── biotop_example.txt
├── bitesize.py
├── bitesize_example.txt
├── bpflist.py
├── bpflist_example.txt
├── btrfsdist.py
├── btrfsdist_example.txt
├── btrfsslower.py
├── btrfsslower_example.txt
├── cachestat.py
├── cachestat_example.txt
├── cachetop.py
├── cachetop_example.txt
├── capable.py
├── capable_example.txt
├── cobjnew.sh
├── compactsnoop.py
├── compactsnoop_example.txt
├── cpudist.py
├── cpudist_example.txt
├── cpuunclaimed.py
├── cpuunclaimed_example.txt
├── criticalstat.py
├── criticalstat_example.txt
├── dbslower.py
├── dbslower_example.txt
├── dbstat.py
├── dbstat_example.txt
├── dcsnoop.py
├── dcsnoop_example.txt
├── dcstat.py
├── dcstat_example.txt
├── deadlock.c
├── deadlock.py
├── deadlock_example.txt
├── dirtop.py
├── dirtop_example.txt
├── drsnoop.py
├── drsnoop_example.txt
├── execsnoop.py
├── execsnoop_example.txt
├── exitsnoop.py
├── exitsnoop_example.txt
├── ext4dist.py
├── ext4dist_example.txt
├── ext4slower.py
├── ext4slower_example.txt
├── f2fsslower.py
├── f2fsslower_example.txt
├── filegone.py
├── filegone_example.txt
├── filelife.py
├── filelife_example.txt
├── fileslower.py
├── fileslower_example.txt
├── filetop.py
├── filetop_example.txt
├── funccount.py
├── funccount_example.txt
├── funcinterval.py
├── funcinterval_example.txt
├── funclatency.py
├── funclatency_example.txt
├── funcslower.py
├── funcslower_example.txt
├── gethostlatency.py
├── gethostlatency_example.txt
├── hardirqs.py
├── hardirqs_example.txt
├── inject.py
├── inject_example.txt
├── javacalls.sh
├── javaflow.sh
├── javagc.sh
├── javaobjnew.sh
├── javastat.sh
├── javathreads.sh
├── killsnoop.py
├── killsnoop_example.txt
├── klockstat.py
├── klockstat_example.txt
├── kvmexit.py
├── kvmexit_example.txt
├── lib/
│ ├── CMakeLists.txt
│ ├── ucalls.py
│ ├── ucalls_example.txt
│ ├── uflow.py
│ ├── uflow_example.txt
│ ├── ugc.py
│ ├── ugc_example.txt
│ ├── uobjnew.py
│ ├── uobjnew_example.txt
│ ├── ustat.py
│ ├── ustat_example.txt
│ ├── uthreads.py
│ └── uthreads_example.txt
├── llcstat.py
├── llcstat_example.txt
├── mdflush.py
├── mdflush_example.txt
├── memleak.py
├── memleak_example.txt
├── mountsnoop.py
├── mountsnoop_example.txt
├── mptcpify.py
├── mptcpify_example.txt
├── mysqld_qslower.py
├── mysqld_qslower_example.txt
├── netqtop.c
├── netqtop.py
├── netqtop_example.txt
├── nfsdist.py
├── nfsdist_example.txt
├── nfsslower.py
├── nfsslower_example.txt
├── nodegc.sh
├── nodestat.sh
├── numasched.py
├── numasched_example.txt
├── offcputime.py
├── offcputime_example.txt
├── offwaketime.py
├── offwaketime_example.txt
├── old/
│ ├── CMakeLists.txt
│ ├── bashreadline.py
│ ├── biosnoop.py
│ ├── compactsnoop.py
│ ├── filegone.py
│ ├── filelife.py
│ ├── gethostlatency.py
│ ├── hardirqs.py
│ ├── killsnoop.py
│ ├── memleak.py
│ ├── offcputime.py
│ ├── offwaketime.py
│ ├── oomkill.py
│ ├── opensnoop.py
│ ├── profile.py
│ ├── profile_example.txt
│ ├── softirqs.py
│ ├── stackcount.py
│ ├── stacksnoop.py
│ ├── statsnoop.py
│ ├── syncsnoop.py
│ ├── tcpaccept.py
│ ├── tcpconnect.py
│ ├── tcptop.py
│ └── wakeuptime.py
├── oomkill.py
├── oomkill_example.txt
├── opensnoop.py
├── opensnoop_example.txt
├── perlcalls.sh
├── perlflow.sh
├── perlstat.sh
├── phpcalls.sh
├── phpflow.sh
├── phpstat.sh
├── pidpersec.py
├── pidpersec_example.txt
├── ppchcalls.py
├── ppchcalls_example.txt
├── profile.py
├── profile_example.txt
├── pythoncalls.sh
├── pythonflow.sh
├── pythongc.sh
├── pythonstat.sh
├── rdmaucma.py
├── rdmaucma_example.txt
├── readahead.py
├── readahead_example.txt
├── reset-trace.sh
├── reset-trace_example.txt
├── rubycalls.sh
├── rubyflow.sh
├── rubygc.sh
├── rubyobjnew.sh
├── rubystat.sh
├── runqlat.py
├── runqlat_example.txt
├── runqlen.py
├── runqlen_example.txt
├── runqslower.py
├── runqslower_example.txt
├── shmsnoop.py
├── shmsnoop_example.txt
├── slabratetop.py
├── slabratetop_example.txt
├── sofdsnoop.py
├── sofdsnoop_example.txt
├── softirqs.py
├── softirqs_example.txt
├── softirqslower.py
├── softirqslower_example.txt
├── solisten.py
├── solisten_example.txt
├── sslsniff.py
├── sslsniff_example.txt
├── stackcount.py
├── stackcount_example.txt
├── stacksnoop.lua
├── statsnoop.py
├── statsnoop_example.txt
├── swapin.py
├── swapin_example.txt
├── syncsnoop.py
├── syncsnoop_example.txt
├── syscount.py
├── syscount_example.txt
├── tclcalls.sh
├── tclflow.sh
├── tclobjnew.sh
├── tclstat.sh
├── tcpaccept.py
├── tcpaccept_example.txt
├── tcpcong.py
├── tcpcong_example.txt
├── tcpconnect.py
├── tcpconnect_example.txt
├── tcpconnlat.py
├── tcpconnlat_example.txt
├── tcpdrop.py
├── tcpdrop_example.txt
├── tcplife.lua
├── tcplife.py
├── tcplife_example.txt
├── tcpretrans.py
├── tcpretrans_example.txt
├── tcprtt.py
├── tcprtt_example.txt
├── tcpstates.py
├── tcpstates_example.txt
├── tcpsubnet.py
├── tcpsubnet_example.txt
├── tcpsynbl.py
├── tcpsynbl_example.txt
├── tcptop.py
├── tcptop_example.txt
├── tcptracer.py
├── tcptracer_example.txt
├── threadsnoop.py
├── threadsnoop_example.txt
├── tplist.py
├── tplist_example.txt
├── trace.py
├── trace_example.txt
├── ttysnoop.py
├── ttysnoop_example.txt
├── vfscount.py
├── vfscount_example.txt
├── vfsstat.py
├── vfsstat_example.txt
├── virtiostat.py
├── virtiostat_example.txt
├── wakeuptime.py
├── wakeuptime_example.txt
├── wqlat.py
├── wqlat_example.txt
├── xfsdist.py
├── xfsdist_example.txt
├── xfsslower.py
├── xfsslower_example.txt
├── zfsdist.py
├── zfsdist_example.txt
├── zfsslower.py
└── zfsslower_example.txt
Showing preview only (4,997K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (75442 symbols across 214 files)
FILE: examples/cgroupid/cgroupid.c
type cgid_file_handle (line 20) | struct cgid_file_handle
function get_cgroupid (line 28) | uint64_t get_cgroupid(const char *pathname) {
function usage (line 70) | void usage() {
function main (line 81) | int main(int argc, char **argv) {
FILE: examples/cpp/CGroupTest.cc
function main (line 44) | int main(int argc, char** argv) {
FILE: examples/cpp/CPUDistribution.cc
function main (line 61) | int main(int argc, char** argv) {
FILE: examples/cpp/FollyRequestContextSwitch.cc
type event_t (line 49) | struct event_t {
function handle_output (line 56) | void handle_output(void* cb_cookie, void* data, int data_size) {
function signal_handler (line 65) | void signal_handler(int s) { shutdown_handler(s); }
function main (line 67) | int main(int argc, char** argv) {
FILE: examples/cpp/HelloWorld.cc
function main (line 21) | int main() {
FILE: examples/cpp/KFuncExample.cc
type info_t (line 64) | struct info_t {
function handle_output (line 70) | void handle_output(void *cb_cookie, void *data, int data_size) {
function main (line 78) | int main() {
FILE: examples/cpp/KModRetExample.cc
type fname_buf (line 94) | struct fname_buf {
function modify_return (line 98) | static int modify_return(ebpf::BPF &bpf) {
function not_modify_return (line 136) | static int not_modify_return(ebpf::BPF &bpf) {
function main (line 172) | int main() {
FILE: examples/cpp/LLCStat.cc
type event_t (line 67) | struct event_t {
function main (line 73) | int main(int argc, char** argv) {
FILE: examples/cpp/RandomRead.cc
type event_t (line 55) | struct event_t {
function handle_output (line 62) | void handle_output(void* cb_cookie, void* data, int data_size) {
function signal_handler (line 71) | void signal_handler(int s) {
function usage (line 77) | void usage(void) {
function main (line 81) | int main(int argc, char** argv) {
FILE: examples/cpp/RecordMySQLQuery.cc
type query_probe_t (line 48) | struct query_probe_t {
function main (line 54) | int main(int argc, char** argv) {
FILE: examples/cpp/SkLocalStorageIterator.cc
type info_t (line 82) | struct info_t {
function main (line 88) | int main() {
FILE: examples/cpp/TCPSendStack.cc
type stack_key_t (line 51) | struct stack_key_t {
function main (line 58) | int main(int argc, char** argv) {
FILE: examples/cpp/TaskIterator.cc
type info_t (line 82) | struct info_t {
function main (line 87) | int main() {
FILE: examples/cpp/UseExternalMap.cc
type sched_switch_info (line 17) | struct sched_switch_info {
function print_counts (line 67) | static void print_counts(ebpf::BPF *bpfp, std::string msg) {
function main (line 80) | int main() {
FILE: examples/cpp/pyperf/Py36Offsets.cc
type ebpf (line 8) | namespace ebpf {
type pyperf (line 9) | namespace pyperf {
FILE: examples/cpp/pyperf/PyPerf.cc
function main (line 23) | int main(int argc, char** argv) {
FILE: examples/cpp/pyperf/PyPerfBPFProgram.cc
type ebpf (line 8) | namespace ebpf {
type pyperf (line 9) | namespace pyperf {
FILE: examples/cpp/pyperf/PyPerfDefaultPrinter.cc
type ebpf (line 12) | namespace ebpf {
type pyperf (line 13) | namespace pyperf {
FILE: examples/cpp/pyperf/PyPerfDefaultPrinter.h
function namespace (line 10) | namespace ebpf {
FILE: examples/cpp/pyperf/PyPerfLoggingHelper.cc
type ebpf (line 11) | namespace ebpf {
type pyperf (line 12) | namespace pyperf {
function setVerbosity (line 16) | void setVerbosity(uint64_t verbosityLevel) {
function logInfo (line 20) | void logInfo(uint64_t logLevel, const char* fmt, ...) {
FILE: examples/cpp/pyperf/PyPerfLoggingHelper.h
function namespace (line 10) | namespace ebpf {
FILE: examples/cpp/pyperf/PyPerfSampleProcessor.h
function namespace (line 12) | namespace ebpf {
FILE: examples/cpp/pyperf/PyPerfType.h
function namespace (line 21) | namespace ebpf {
FILE: examples/cpp/pyperf/PyPerfUtil.cc
type ebpf (line 25) | namespace ebpf {
type pyperf (line 26) | namespace pyperf {
function getRunningPids (line 49) | bool getRunningPids(std::vector<int>& output) {
function findPythonPathCallback (line 96) | int findPythonPathCallback(mod_info *mod, int, void* payload) {
function allAddrFound (line 114) | bool allAddrFound(const PidData& data) {
function getAddrOfPythonBinaryCallback (line 119) | int getAddrOfPythonBinaryCallback(const char* name, uint64_t addr, u...
function getAddrOfPythonBinary (line 140) | bool getAddrOfPythonBinary(const std::string& path, PidData& data) {
function handleSampleCallback (line 155) | void handleSampleCallback(void* cb_cookie, void* raw_data, int data_...
function handleLostSamplesCallback (line 160) | void handleLostSamplesCallback(void* cb_cookie, uint64_t lost_cnt) {
FILE: examples/cpp/pyperf/PyPerfUtil.h
function class (line 22) | class PyPerfUtil {
FILE: examples/lua/bashreadline.c
type str_t (line 3) | struct str_t {
function printret (line 10) | int printret(struct pt_regs *ctx)
FILE: examples/networking/distributed_bridge/main.py
class TunnelSimulation (line 35) | class TunnelSimulation(Simulation):
method __init__ (line 36) | def __init__(self, ipdb):
method start (line 39) | def start(self):
FILE: examples/networking/distributed_bridge/tunnel.c
type vni_key (line 7) | struct vni_key {
type host (line 12) | struct host {
type config (line 20) | struct config {
function handle_ingress (line 26) | int handle_ingress(struct __sk_buff *skb) {
function handle_egress (line 53) | int handle_egress(struct __sk_buff *skb) {
FILE: examples/networking/distributed_bridge/tunnel.py
function run (line 35) | def run():
FILE: examples/networking/distributed_bridge/tunnel_mesh.c
type config (line 5) | struct config {
type tunnel_key (line 10) | struct tunnel_key {
function handle_ingress (line 19) | int handle_ingress(struct __sk_buff *skb) {
function handle_egress (line 42) | int handle_egress(struct __sk_buff *skb) {
FILE: examples/networking/distributed_bridge/tunnel_mesh.py
function run (line 41) | def run():
FILE: examples/networking/dns_matching/dns_matching.c
type dns_hdr_t (line 23) | struct dns_hdr_t
type dns_query_flags_t (line 34) | struct dns_query_flags_t
type dns_char_t (line 40) | struct dns_char_t
type Key (line 45) | struct Key {
type Leaf (line 49) | struct Leaf {
function dns_matching (line 56) | int dns_matching(struct __sk_buff *skb)
FILE: examples/networking/dns_matching/dns_matching.py
function encode_dns (line 14) | def encode_dns(name):
function add_cache_entry (line 27) | def add_cache_entry(cache, name):
FILE: examples/networking/http_filter/http-parse-complete.c
type Key (line 8) | struct Key {
type Leaf (line 15) | struct Leaf {
function http_filter (line 36) | int http_filter(struct __sk_buff *skb) {
FILE: examples/networking/http_filter/http-parse-complete.py
function printUntilCRLF (line 33) | def printUntilCRLF(s):
function cleanup (line 38) | def cleanup():
function usage (line 60) | def usage():
function help (line 68) | def help():
FILE: examples/networking/http_filter/http-parse-simple.c
function http_filter (line 16) | int http_filter(struct __sk_buff *skb) {
FILE: examples/networking/http_filter/http-parse-simple.py
function usage (line 24) | def usage():
function help (line 31) | def help():
FILE: examples/networking/neighbor_sharing/tc_neighbor_sharing.c
type ipkey (line 6) | struct ipkey {
function pass (line 13) | int pass(struct __sk_buff *skb) {
function classify_wan (line 21) | int classify_wan(struct __sk_buff *skb) {
function classify_neighbor (line 46) | int classify_neighbor(struct __sk_buff *skb) {
FILE: examples/networking/neighbor_sharing/tc_neighbor_sharing.py
class SharedNetSimulation (line 24) | class SharedNetSimulation(Simulation):
method __init__ (line 26) | def __init__(self, ipdb):
method start (line 43) | def start(self):
FILE: examples/networking/net_monitor.py
function help (line 14) | def help():
function decimal_to_human (line 99) | def decimal_to_human(input_value):
FILE: examples/networking/simulation.py
class Simulation (line 6) | class Simulation(object):
method __init__ (line 12) | def __init__(self, ipdb):
method _ns_add_ifc (line 23) | def _ns_add_ifc(self, name, ns_ifc, ifc_base_name=None, in_ifc=None,
method _create_ns (line 105) | def _create_ns(self, name, in_ifc=None, out_ifc=None, ipaddr=None,
method release (line 112) | def release(self):
FILE: examples/networking/sockmap.py
function detach_all (line 119) | def detach_all():
FILE: examples/networking/tc_perf_event.py
function print_skb_event (line 47) | def print_skb_event(cpu, data, size):
FILE: examples/networking/tcp_mon_block/src/tcp_mon_block.c
type full_packet (line 24) | typedef struct
type verbose_event (line 36) | typedef struct
type key_hash (line 48) | typedef struct
function __always_inline (line 72) | static __always_inline int tcp_header_bound_check(struct tcphdr* tcp, vo...
function make_verbose_event (line 83) | static void make_verbose_event(verbose_event *v, u32 src_ip, u32 dst_ip,...
function handle_egress (line 95) | int handle_egress(struct __sk_buff *ctx)
type sock (line 164) | struct sock
type sock (line 164) | struct sock
function trace_connect_entry (line 192) | int trace_connect_entry(struct pt_regs *ctx, struct sock *sk)
FILE: examples/networking/tcp_mon_block/src/tcp_mon_block.py
function get_verbose_message (line 42) | def get_verbose_message(state):
function parse_tcp_flags (line 49) | def parse_tcp_flags(flags):
function ip_to_network_address (line 71) | def ip_to_network_address(ip):
function network_address_to_ip (line 75) | def network_address_to_ip(ip):
function parse_address (line 79) | def parse_address(url_or_ip):
function create_bpf_allow_list (line 109) | def create_bpf_allow_list(bpf):
function create_tc (line 136) | def create_tc(interface):
function parse_blocked_event (line 154) | def parse_blocked_event(cpu, data, size):
function parse_verbose_event (line 162) | def parse_verbose_event(cpu, data, size):
FILE: examples/networking/tcp_mon_block/src/web_server.py
function index (line 12) | def index():
function public_ip (line 20) | def public_ip():
FILE: examples/networking/tunnel_monitor/main.py
class TunnelSimulation (line 23) | class TunnelSimulation(Simulation):
method __init__ (line 24) | def __init__(self, ipdb):
method start (line 29) | def start(self):
method serve_http (line 68) | def serve_http(self):
FILE: examples/networking/tunnel_monitor/monitor.c
type ipkey (line 5) | struct ipkey {
type counters (line 12) | struct counters {
type cb_index (line 22) | enum cb_index {
function swap32 (line 31) | static inline
function swap_ipkey (line 39) | static inline
function handle_ingress (line 47) | int handle_ingress(struct __sk_buff *skb) {
function handle_egress (line 54) | int handle_egress(struct __sk_buff *skb) {
function handle_outer (line 61) | int handle_outer(struct __sk_buff *skb) {
function handle_inner (line 104) | int handle_inner(struct __sk_buff *skb) {
FILE: examples/networking/tunnel_monitor/monitor.py
function stats2json (line 37) | def stats2json(k, v):
function delta_stats (line 48) | def delta_stats(v, oldv):
function key2str (line 51) | def key2str(k):
FILE: examples/networking/vlan_filter/data-plane-tracing.c
function vlan_filter (line 21) | int vlan_filter(struct __sk_buff *skb) {
FILE: examples/networking/vlan_filter/data-plane-tracing.py
function usage (line 18) | def usage():
function help (line 25) | def help():
FILE: examples/networking/vlan_learning/vlan_learning.c
type ifindex_leaf_t (line 6) | struct ifindex_leaf_t {
function handle_phys2virt (line 20) | int handle_phys2virt(struct __sk_buff *skb) {
function handle_virt2phys (line 50) | int handle_virt2phys(struct __sk_buff *skb) {
FILE: examples/networking/vlan_learning/vlan_learning.py
class VlanSimulation (line 27) | class VlanSimulation(Simulation):
method __init__ (line 28) | def __init__(self, ipdb):
method start (line 31) | def start(self):
FILE: examples/networking/xdp/xdp_drop_count.py
function usage (line 17) | def usage():
FILE: examples/networking/xdp/xdp_macswap_count.py
function usage (line 19) | def usage():
FILE: examples/networking/xdp/xdp_redirect_cpu.py
function usage (line 15) | def usage():
FILE: examples/networking/xdp/xdp_redirect_map.py
function usage (line 16) | def usage():
FILE: examples/perf/ipc.py
function print_data (line 151) | def print_data(cpu, data, size):
FILE: examples/ringbuf/ringbuf_output.py
function callback (line 37) | def callback(ctx, data, size):
FILE: examples/ringbuf/ringbuf_submit.py
function callback (line 41) | def callback(ctx, data, size):
FILE: examples/tracing/biolatpcts.py
function find_pct (line 65) | def find_pct(req, total, slots, idx, counted):
function calc_lat_pct (line 74) | def calc_lat_pct(req_pcts, total, lat_100ms, lat_1ms, lat_10us):
FILE: examples/tracing/dddos.py
class DetectionTimestamp (line 86) | class DetectionTimestamp(ct.Structure):
function trigger_alert_event (line 94) | def trigger_alert_event(cpu, data, size):
FILE: examples/tracing/hello_perf_output.py
function print_event (line 42) | def print_event(cpu, data, size):
FILE: examples/tracing/hello_perf_output_using_ns.py
function print_event (line 57) | def print_event(cpu, data, size):
FILE: examples/tracing/lbr.py
function print_line (line 193) | def print_line(max_len, dir, info, i=' '):
function print_ex_line (line 199) | def print_ex_line(max_fr, max_to, fr, to, i=' '):
function addr2line (line 207) | def addr2line(addr):
function print_snapshot (line 214) | def print_snapshot():
FILE: examples/tracing/nflatency.py
function main (line 182) | def main():
function build_src (line 213) | def build_src(args):
function bucket_desc (line 229) | def bucket_desc(bucket):
FILE: examples/tracing/setuid_monitor.py
function print_event (line 48) | def print_event(cpu, data, size):
FILE: examples/tracing/stack_buildid_example.py
function Get_libc_path (line 32) | def Get_libc_path():
function signal_handler (line 86) | def signal_handler(signal, frame):
FILE: examples/tracing/stacksnoop.py
function print_event (line 96) | def print_event(cpu, data, size):
FILE: examples/tracing/strlen_hist_ifunc.py
function get_indirect_function_sym (line 46) | def get_indirect_function_sym(module, symname):
function set_impl_func_addr (line 66) | def set_impl_func_addr(cpu, data, size):
function set_resolv_func_addr (line 72) | def set_resolv_func_addr(cpu, data, size):
function find_impl_func_offset (line 78) | def find_impl_func_offset(ifunc_symbol):
function main (line 105) | def main():
FILE: examples/tracing/task_switch.c
type key_t (line 4) | struct key_t {
function count_sched (line 10) | int count_sched(struct pt_regs *ctx, struct task_struct *prev) {
FILE: examples/tracing/tcpv4connect.py
function inet_ntoa (line 79) | def inet_ntoa(addr):
FILE: examples/tracing/trace_perf_output.py
class Data (line 14) | class Data(ct.Structure):
function cb (line 19) | def cb(cpu, data, size):
function print_counter (line 49) | def print_counter():
FILE: examples/tracing/undump.py
function print_recv_pkg (line 104) | def print_recv_pkg(cpu, data, size):
FILE: examples/tracing/vfsreadlat.c
function do_entry (line 18) | int do_entry(struct pt_regs *ctx)
function do_return (line 29) | int do_return(struct pt_regs *ctx)
FILE: examples/tracing/vfsreadlat.py
function usage (line 23) | def usage():
FILE: examples/usdt_sample/scripts/bpf_text_shared.c
function filter (line 9) | static inline bool filter(char const* inputString)
type start_data_t (line 37) | struct start_data_t
function trace_operation_start (line 55) | int trace_operation_start(struct pt_regs* ctx)
FILE: examples/usdt_sample/scripts/latency.py
class OperationEventData (line 100) | class OperationEventData(ct.Structure):
function print_event (line 109) | def print_event(cpu, data, size):
FILE: examples/usdt_sample/usdt_sample_app1/main.cpp
function print_usage (line 19) | void print_usage(int argc, char** argv)
function main (line 33) | int main(int argc, char** argv)
FILE: examples/usdt_sample/usdt_sample_lib1/include/usdt_sample_lib1/lib1.h
function class (line 12) | class OperationRequest
function class (line 25) | class OperationResponse
function class (line 38) | class OperationProvider
FILE: introspection/bps.c
function ptr_to_u64 (line 98) | static inline uint64_t ptr_to_u64(const void *ptr)
function handle_get_next_errno (line 108) | static int handle_get_next_errno(int eno)
function print_prog_hdr (line 126) | static void print_prog_hdr(void)
function print_prog_info (line 132) | static void print_prog_info(const struct bpf_prog_info *prog_info)
function print_map_hdr (line 174) | static void print_map_hdr(void)
function print_map_info (line 181) | static void print_map_info(const struct bpf_map_info *map_info)
function print_one_prog (line 201) | static int print_one_prog(uint32_t prog_id)
function print_all_progs (line 294) | int print_all_progs(void)
function usage (line 331) | void usage(void)
function main (line 340) | int main(int argc, char **argv)
FILE: libbpf-tools/arm64/vmlinux_614.h
type BIT_DStream_status (line 31411) | typedef enum {
type EFI_PCI_IO_PROTOCOL_WIDTH (line 31418) | typedef enum {
type EFI_TIMER_DELAY (line 31434) | typedef enum {
type ZSTD_ErrorCode (line 31440) | typedef enum {
type ZSTD_ErrorCode (line 31471) | typedef ZSTD_ErrorCode ERR_enum;
type ZSTD_ResetDirective (line 31473) | typedef enum {
type ZSTD_bufferMode_e (line 31479) | typedef enum {
type ZSTD_dParameter (line 31484) | typedef enum {
type ZSTD_dStage (line 31492) | typedef enum {
type ZSTD_dStreamStage (line 31503) | typedef enum {
type ZSTD_dictContentType_e (line 31511) | typedef enum {
type ZSTD_dictLoadMethod_e (line 31517) | typedef enum {
type ZSTD_dictUses_e (line 31522) | typedef enum {
type ZSTD_forceIgnoreChecksum_e (line 31528) | typedef enum {
type ZSTD_format_e (line 31533) | typedef enum {
type ZSTD_frameType_e (line 31538) | typedef enum {
type ZSTD_litLocation_e (line 31543) | typedef enum {
type ZSTD_longOffset_e (line 31549) | typedef enum {
type ZSTD_nextInputType_e (line 31554) | typedef enum {
type ZSTD_overlap_e (line 31563) | typedef enum {
type ZSTD_refMultipleDDicts_e (line 31568) | typedef enum {
type acpi_execute_type (line 31573) | typedef enum {
type acpi_interpreter_mode (line 31583) | typedef enum {
type acpi_trace_event_type (line 31589) | typedef enum {
type blockType_e (line 31595) | typedef enum {
type block_state (line 31602) | typedef enum {
type codetype (line 31609) | typedef enum {
type cpuset_filetype_t (line 31615) | typedef enum {
type cpuset_flagbits_t (line 31637) | typedef enum {
type dict_directive (line 31648) | typedef enum {
type dirblock_type_t (line 31654) | typedef enum {
type e1000_1000t_rx_status (line 31661) | typedef enum {
type e1000_10bt_ext_dist_enable (line 31667) | typedef enum {
type e1000_auto_x_mode (line 31673) | typedef enum {
type e1000_bus_speed (line 31681) | typedef enum {
type e1000_bus_type (line 31691) | typedef enum {
type e1000_bus_width (line 31698) | typedef enum {
type e1000_cable_length (line 31705) | typedef enum {
type e1000_downshift (line 31714) | typedef enum {
type e1000_dsp_config (line 31720) | typedef enum {
type e1000_eeprom_type (line 31727) | typedef enum {
type e1000_fc_type (line 31736) | typedef enum {
type e1000_ffe_config (line 31744) | typedef enum {
type e1000_mac_type (line 31750) | typedef enum {
type e1000_media_type (line 31769) | typedef enum {
type e1000_ms_type (line 31776) | typedef enum {
type e1000_phy_type (line 31783) | typedef enum {
type e1000_polarity_reversal (line 31791) | typedef enum {
type e1000_rev_polarity (line 31797) | typedef enum {
type e1000_smart_speed (line 31803) | typedef enum {
type earlyEnd_directive (line 31809) | typedef enum {
type endCondition_directive (line 31814) | typedef enum {
type ext4_iget_flags (line 31819) | typedef enum {
type flstate_t (line 31827) | typedef enum {
type inflate_mode (line 31858) | typedef enum {
type isolate_migrate_t (line 31891) | typedef enum {
type map_chg_state (line 31897) | typedef enum {
type pageout_t (line 31903) | typedef enum {
type pci_bridge_emul_read_status_t (line 31910) | typedef enum {
type phy_interface_t (line 31915) | typedef enum {
type psmouse_ret_t (line 31953) | typedef enum {
type socket_state (line 31959) | typedef enum {
type streaming_operation (line 31967) | typedef enum {
type symbolEncodingType_e (line 31972) | typedef enum {
type ZSTD_ErrorCode (line 31979) | typedef ZSTD_ErrorCode zstd_error_code;
type APSR_BIT (line 31981) | enum APSR_BIT {
type ARSTR_BIT (line 31989) | enum ARSTR_BIT {
type CCC_BIT (line 31993) | enum CCC_BIT {
type CIE_BIT (line 32007) | enum CIE_BIT {
type CMD_RET_VALUES (line 32016) | enum CMD_RET_VALUES {
type CSI_J (line 32022) | enum CSI_J {
type CSI_right_square_bracket (line 32029) | enum CSI_right_square_bracket {
type CSR0_BIT (line 32043) | enum CSR0_BIT {
type CSR1_BIT (line 32048) | enum CSR1_BIT {
type CSR2_BIT (line 32062) | enum CSR2_BIT {
type CSR_BIT (line 32076) | enum CSR_BIT {
type CXR31_BIT (line 32090) | enum CXR31_BIT {
type CXR35_BIT (line 32095) | enum CXR35_BIT {
type DCMD_RETURN_STATUS (line 32102) | enum DCMD_RETURN_STATUS {
type DCMD_TIMEOUT_ACTION (line 32110) | enum DCMD_TIMEOUT_ACTION {
type DIE_DT (line 32116) | enum DIE_DT {
type DIE_DT___2 (line 32136) | enum DIE_DT___2 {
type DIE_DT___3 (line 32157) | enum DIE_DT___3 {
type DMA_REGS_OFFSET (line 32173) | enum DMA_REGS_OFFSET {
type E1000_INVM_STRUCTURE_TYPE (line 32187) | enum E1000_INVM_STRUCTURE_TYPE {
type ECMR_BIT (line 32196) | enum ECMR_BIT {
type ECMR_BIT___2 (line 32213) | enum ECMR_BIT___2 {
type ECSIPR_BIT (line 32234) | enum ECSIPR_BIT {
type ECSIPR_BIT___2 (line 32240) | enum ECSIPR_BIT___2 {
type ECSR_BIT (line 32248) | enum ECSR_BIT {
type ECSR_BIT___2 (line 32256) | enum ECSR_BIT___2 {
type EDMR_BIT (line 32264) | enum EDMR_BIT {
type EDRRR_BIT (line 32273) | enum EDRRR_BIT {
type EDSR_BIT (line 32277) | enum EDSR_BIT {
type EDTRR_BIT (line 32282) | enum EDTRR_BIT {
type EESIPR_BIT (line 32287) | enum EESIPR_BIT {
type EESR_BIT (line 32318) | enum EESR_BIT {
type EIS_BIT (line 32349) | enum EIS_BIT {
type EXT_INFO_DS_BIT (line 32363) | enum EXT_INFO_DS_BIT {
type FCFTR_BIT (line 32367) | enum FCFTR_BIT {
type FW_BOOT_CONTEXT (line 32376) | enum FW_BOOT_CONTEXT {
type GCCR_BIT (line 32381) | enum GCCR_BIT {
type GECMR_BIT (line 32396) | enum GECMR_BIT {
type GECMR_BIT___2 (line 32402) | enum GECMR_BIT___2 {
type GIC_BIT (line 32412) | enum GIC_BIT {
type GID_BIT (line 32417) | enum GID_BIT {
type GIE_BIT (line 32446) | enum GIE_BIT {
type GIS_BIT (line 32475) | enum GIS_BIT {
type GTI_BIT (line 32481) | enum GTI_BIT {
type HCLGE_COMM_API_CAP_BITS (line 32485) | enum HCLGE_COMM_API_CAP_BITS {
type HCLGE_COMM_CAP_BITS (line 32489) | enum HCLGE_COMM_CAP_BITS {
type HCLGE_DEV_STATE (line 32518) | enum HCLGE_DEV_STATE {
type HCLGE_FD_ACTION (line 32543) | enum HCLGE_FD_ACTION {
type HCLGE_FD_ACTIVE_RULE_TYPE (line 32549) | enum HCLGE_FD_ACTIVE_RULE_TYPE {
type HCLGE_FD_KEY_OPT (line 32556) | enum HCLGE_FD_KEY_OPT {
type HCLGE_FD_KEY_TYPE (line 32565) | enum HCLGE_FD_KEY_TYPE {
type HCLGE_FD_META_DATA (line 32570) | enum HCLGE_FD_META_DATA {
type HCLGE_FD_MODE (line 32582) | enum HCLGE_FD_MODE {
type HCLGE_FD_NODE_STATE (line 32589) | enum HCLGE_FD_NODE_STATE {
type HCLGE_FD_PACKET_TYPE (line 32596) | enum HCLGE_FD_PACKET_TYPE {
type HCLGE_FD_STAGE (line 32601) | enum HCLGE_FD_STAGE {
type HCLGE_FD_TUPLE (line 32607) | enum HCLGE_FD_TUPLE {
type HCLGE_FD_USER_DEF_LAYER (line 32641) | enum HCLGE_FD_USER_DEF_LAYER {
type HCLGE_FIRMWARE_MAC_SPEED (line 32648) | enum HCLGE_FIRMWARE_MAC_SPEED {
type HCLGE_MAC_ADDR_TYPE (line 32660) | enum HCLGE_MAC_ADDR_TYPE {
type HCLGE_MAC_DUPLEX (line 32665) | enum HCLGE_MAC_DUPLEX {
type HCLGE_MAC_NODE_STATE (line 32670) | enum HCLGE_MAC_NODE_STATE {
type HCLGE_MAC_SPEED (line 32676) | enum HCLGE_MAC_SPEED {
type HCLGE_MBX_OPCODE (line 32689) | enum HCLGE_MBX_OPCODE {
type HCLGE_VPORT_NEED_NOTIFY (line 32734) | enum HCLGE_VPORT_NEED_NOTIFY {
type HCLGE_VPORT_STATE (line 32739) | enum HCLGE_VPORT_STATE {
type HLCGE_PORT_TYPE (line 32748) | enum HLCGE_PORT_TYPE {
type HNAE3_DEV_CAP_BITS (line 32753) | enum HNAE3_DEV_CAP_BITS {
type HNAE3_PF_CAP_BITS (line 32784) | enum HNAE3_PF_CAP_BITS {
type I2C_REGS_OFFSET (line 32788) | enum I2C_REGS_OFFSET {
type ISS_BIT (line 32823) | enum ISS_BIT {
type KTHREAD_BITS (line 32849) | enum KTHREAD_BITS {
type LMAC_TYPE (line 32855) | enum LMAC_TYPE {
type MAX77686_RTC_OP (line 32869) | enum MAX77686_RTC_OP {
type MCAST_MODE (line 32874) | enum MCAST_MODE {
type MEGASAS_LD_TARGET_ID_STATUS (line 32881) | enum MEGASAS_LD_TARGET_ID_STATUS {
type MEGASAS_OCR_CAUSE (line 32887) | enum MEGASAS_OCR_CAUSE {
type MFI_CMD_OP (line 32893) | enum MFI_CMD_OP {
type MFI_STAT (line 32909) | enum MFI_STAT {
type MR_ADAPTER_TYPE (line 32971) | enum MR_ADAPTER_TYPE {
type MR_EVT_CLASS (line 32979) | enum MR_EVT_CLASS {
type MR_EVT_LOCALE (line 32989) | enum MR_EVT_LOCALE {
type MR_FW_CRASH_DUMP_STATE (line 33001) | enum MR_FW_CRASH_DUMP_STATE {
type MR_LD_QUERY_TYPE (line 33009) | enum MR_LD_QUERY_TYPE {
type MR_PD_QUERY_TYPE (line 33017) | enum MR_PD_QUERY_TYPE {
type MR_PD_STATE (line 33026) | enum MR_PD_STATE {
type MR_PD_TYPE (line 33038) | enum MR_PD_TYPE {
type MR_PERF_MODE (line 33047) | enum MR_PERF_MODE {
type MR_RAID_FLAGS_IO_SUB_TYPE (line 33053) | enum MR_RAID_FLAGS_IO_SUB_TYPE {
type MR_RAID_MAP_DESC_TYPE (line 33064) | enum MR_RAID_MAP_DESC_TYPE {
type MR_SCSI_CMD_TYPE (line 33072) | enum MR_SCSI_CMD_TYPE {
type MSC_BIT (line 33079) | enum MSC_BIT {
type MT6323_IRQ_STATUS_numbers (line 33090) | enum MT6323_IRQ_STATUS_numbers {
type OID (line 33114) | enum OID {
type Opt_errors (line 33221) | enum Opt_errors {
type PIR_BIT (line 33226) | enum PIR_BIT {
type PIR_BIT___2 (line 33233) | enum PIR_BIT___2 {
type PSR_BIT (line 33240) | enum PSR_BIT {
type RAVB_QUEUE (line 33244) | enum RAVB_QUEUE {
type RCR_BIT (line 33249) | enum RCR_BIT {
type RD_LEN_BIT (line 33258) | enum RD_LEN_BIT {
type RD_STS_BIT (line 33263) | enum RD_STS_BIT {
type REGION_TYPE (line 33281) | enum REGION_TYPE {
type RIC0_BIT (line 33288) | enum RIC0_BIT {
type RIC2_BIT (line 33309) | enum RIC2_BIT {
type RIS0_BIT (line 33331) | enum RIS0_BIT {
type RIS2_BIT (line 33353) | enum RIS2_BIT {
type RMCR_BIT (line 33376) | enum RMCR_BIT {
type RX_DS_CC_BIT (line 33380) | enum RX_DS_CC_BIT {
type S2MPU02_reg (line 33387) | enum S2MPU02_reg {
type S2MPU02_regulators (line 33476) | enum S2MPU02_regulators {
type SCI_CLKS (line 33515) | enum SCI_CLKS {
type SHIFT_DIRECTION (line 33523) | enum SHIFT_DIRECTION {
type SS4_PACKET_ID (line 33528) | enum SS4_PACKET_ID {
type TCCR_BIT (line 33536) | enum TCCR_BIT {
type TD_STS_BIT (line 33545) | enum TD_STS_BIT {
type TFA2_BIT (line 33554) | enum TFA2_BIT {
type TGC_BIT (line 33559) | enum TGC_BIT {
type TIC_BIT (line 33574) | enum TIC_BIT {
type TIS_BIT (line 33581) | enum TIS_BIT {
type TPAUSER_BIT (line 33589) | enum TPAUSER_BIT {
type TPM_OPS_FLAGS (line 33594) | enum TPM_OPS_FLAGS {
type TRSCER_BIT (line 33598) | enum TRSCER_BIT {
type TSR_BIT (line 33611) | enum TSR_BIT {
type TSU_ADSBSY_BIT (line 33617) | enum TSU_ADSBSY_BIT {
type TSU_FWSLC_BIT (line 33621) | enum TSU_FWSLC_BIT {
type TX_DS_TAGL_BIT (line 33634) | enum TX_DS_TAGL_BIT {
type TX_FS_TAGL_BIT (line 33639) | enum TX_FS_TAGL_BIT {
type TX_TAGH_TSR_BIT (line 33644) | enum TX_TAGH_TSR_BIT {
type UART_TX_FLAGS (line 33649) | enum UART_TX_FLAGS {
type V7_PACKET_ID (line 33653) | enum V7_PACKET_ID {
type _MR_CRASH_BUF_STATUS (line 33661) | enum _MR_CRASH_BUF_STATUS {
type __kvm_host_smccc_func (line 33666) | enum __kvm_host_smccc_func {
type __sk_action (line 33701) | enum __sk_action {
type _dsm_op_index (line 33708) | enum _dsm_op_index {
type _dsm_rst_type (line 33717) | enum _dsm_rst_type {
type _pmux_input (line 33726) | enum _pmux_input {
type _slab_flag_bits (line 33734) | enum _slab_flag_bits {
type aarch32_map (line 33757) | enum aarch32_map {
type aarch64_insn_adr_type (line 33763) | enum aarch64_insn_adr_type {
type aarch64_insn_adsb_type (line 33768) | enum aarch64_insn_adsb_type {
type aarch64_insn_bitfield_type (line 33775) | enum aarch64_insn_bitfield_type {
type aarch64_insn_branch_type (line 33781) | enum aarch64_insn_branch_type {
type aarch64_insn_condition (line 33789) | enum aarch64_insn_condition {
type aarch64_insn_data1_type (line 33807) | enum aarch64_insn_data1_type {
type aarch64_insn_data2_type (line 33813) | enum aarch64_insn_data2_type {
type aarch64_insn_data3_type (line 33822) | enum aarch64_insn_data3_type {
type aarch64_insn_hint_cr_op (line 33827) | enum aarch64_insn_hint_cr_op {
type aarch64_insn_imm_type (line 33858) | enum aarch64_insn_imm_type {
type aarch64_insn_ldst_type (line 33874) | enum aarch64_insn_ldst_type {
type aarch64_insn_logic_type (line 33891) | enum aarch64_insn_logic_type {
type aarch64_insn_mb_type (line 33902) | enum aarch64_insn_mb_type {
type aarch64_insn_mem_atomic_op (line 33917) | enum aarch64_insn_mem_atomic_op {
type aarch64_insn_mem_order_type (line 33925) | enum aarch64_insn_mem_order_type {
type aarch64_insn_movewide_type (line 33932) | enum aarch64_insn_movewide_type {
type aarch64_insn_movw_imm_type (line 33938) | enum aarch64_insn_movw_imm_type {
type aarch64_insn_register (line 33943) | enum aarch64_insn_register {
type aarch64_insn_register_type (line 33981) | enum aarch64_insn_register_type {
type aarch64_insn_size_type (line 33991) | enum aarch64_insn_size_type {
type aarch64_insn_special_register (line 33998) | enum aarch64_insn_special_register {
type aarch64_insn_system_register (line 34021) | enum aarch64_insn_system_register {
type aarch64_insn_variant (line 34027) | enum aarch64_insn_variant {
type aarch64_regset (line 34032) | enum aarch64_regset {
type aarch64_reloc_op (line 34047) | enum aarch64_reloc_op {
type access_coordinate_class (line 34054) | enum access_coordinate_class {
type acpi_attr_enum (line 34060) | enum acpi_attr_enum {
type acpi_bridge_type (line 34065) | enum acpi_bridge_type {
type acpi_bus_device_type (line 34070) | enum acpi_bus_device_type {
type acpi_cdat_type (line 34081) | enum acpi_cdat_type {
type acpi_cedt_type (line 34091) | enum acpi_cedt_type {
type acpi_device_swnode_dev_props (line 34099) | enum acpi_device_swnode_dev_props {
type acpi_device_swnode_ep_props (line 34109) | enum acpi_device_swnode_ep_props {
type acpi_device_swnode_port_props (line 34121) | enum acpi_device_swnode_port_props {
type acpi_einj_actions (line 34127) | enum acpi_einj_actions {
type acpi_einj_instructions (line 34142) | enum acpi_einj_instructions {
type acpi_erst_actions (line 34152) | enum acpi_erst_actions {
type acpi_erst_instructions (line 34173) | enum acpi_erst_instructions {
type acpi_gtdt_type (line 34196) | enum acpi_gtdt_type {
type acpi_hest_notify_types (line 34202) | enum acpi_hest_notify_types {
type acpi_hest_types (line 34218) | enum acpi_hest_types {
type acpi_hmat_type (line 34234) | enum acpi_hmat_type {
type acpi_iort_node_type (line 34241) | enum acpi_iort_node_type {
type acpi_irq_model_id (line 34251) | enum acpi_irq_model_id {
type acpi_madt_gic_version (line 34262) | enum acpi_madt_gic_version {
type acpi_madt_multiproc_wakeup_version (line 34271) | enum acpi_madt_multiproc_wakeup_version {
type acpi_madt_type (line 34277) | enum acpi_madt_type {
type acpi_pcct_type (line 34310) | enum acpi_pcct_type {
type acpi_pptt_type (line 34320) | enum acpi_pptt_type {
type acpi_predicate (line 34327) | enum acpi_predicate {
type acpi_reconfig_event (line 34334) | enum acpi_reconfig_event {
type acpi_return_package_types (line 34339) | enum acpi_return_package_types {
type acpi_srat_type (line 34355) | enum acpi_srat_type {
type acpi_subtable_type (line 34367) | enum acpi_subtable_type {
type actions (line 34375) | enum actions {
type ahci_qoriq_type (line 34381) | enum ahci_qoriq_type {
type alarmtimer_type (line 34392) | enum alarmtimer_type {
type ale_fields (line 34400) | enum ale_fields {
type altera_pcie_version (line 34449) | enum altera_pcie_version {
type am65_cpsw_tx_buf_type (line 34454) | enum am65_cpsw_tx_buf_type {
type aqr_fw_src (line 34460) | enum aqr_fw_src {
type arch_timer_erratum_match_type (line 34465) | enum arch_timer_erratum_match_type {
type arch_timer_ppi_nr (line 34471) | enum arch_timer_ppi_nr {
type arch_timer_reg (line 34480) | enum arch_timer_reg {
type arch_timer_spi_nr (line 34485) | enum arch_timer_spi_nr {
type arm64_bp_harden_el1_vectors (line 34491) | enum arm64_bp_harden_el1_vectors {
type arm64_hyp_spectre_vector (line 34498) | enum arm64_hyp_spectre_vector {
type arm_smccc_conduit (line 34505) | enum arm_smccc_conduit {
type arm_smmu_arch_version (line 34511) | enum arm_smmu_arch_version {
type arm_smmu_cbar_type (line 34517) | enum arm_smmu_cbar_type {
type arm_smmu_context_fmt (line 34524) | enum arm_smmu_context_fmt {
type arm_smmu_domain_stage (line 34531) | enum arm_smmu_domain_stage {
type arm_smmu_domain_stage___2 (line 34536) | enum arm_smmu_domain_stage___2 {
type arm_smmu_implementation (line 34542) | enum arm_smmu_implementation {
type arm_smmu_msi_index (line 34549) | enum arm_smmu_msi_index {
type arm_smmu_s2cr_privcfg (line 34556) | enum arm_smmu_s2cr_privcfg {
type arm_smmu_s2cr_type (line 34563) | enum arm_smmu_s2cr_type {
type armpmu_attr_groups (line 34569) | enum armpmu_attr_groups {
type asn1_class (line 34577) | enum asn1_class {
type asn1_method (line 34584) | enum asn1_method {
type asn1_opcode (line 34589) | enum asn1_opcode {
type asn1_tag (line 34623) | enum asn1_tag {
type asp_netfilt_reg_type (line 34656) | enum asp_netfilt_reg_type {
type asp_rx_filter_id (line 34662) | enum asp_rx_filter_id {
type asp_rx_net_filter_block (line 34670) | enum asp_rx_net_filter_block {
type assoc_array_walk_status (line 34678) | enum assoc_array_walk_status {
type asymmetric_payload_bits (line 34684) | enum asymmetric_payload_bits {
type ata_completion_errors (line 34691) | enum ata_completion_errors {
type ata_dev_iter_mode (line 34706) | enum ata_dev_iter_mode {
type ata_link_iter_mode (line 34713) | enum ata_link_iter_mode {
type ata_lpm_hints (line 34719) | enum ata_lpm_hints {
type ata_lpm_policy (line 34725) | enum ata_lpm_policy {
type ata_prot_flags (line 34734) | enum ata_prot_flags {
type ata_quirks (line 34750) | enum ata_quirks {
type ata_xfer_mask (line 34785) | enum ata_xfer_mask {
type attr_idn (line 34791) | enum attr_idn {
type audit_nfcfgop (line 34826) | enum audit_nfcfgop {
type audit_nlgrps (line 34851) | enum audit_nlgrps {
type audit_ntp_type (line 34857) | enum audit_ntp_type {
type audit_state (line 34867) | enum audit_state {
type auditsc_class_t (line 34873) | enum auditsc_class_t {
type autofs_notify (line 34884) | enum autofs_notify {
type axp15060_irqs (line 34890) | enum axp15060_irqs {
type axp192_irqs (line 34907) | enum axp192_irqs {
type axp20x_variants (line 34943) | enum axp20x_variants {
type axp22x_irqs (line 34962) | enum axp22x_irqs {
type axp288_irqs (line 34990) | enum axp288_irqs {
type axp313a_irqs (line 35027) | enum axp313a_irqs {
type axp717_irqs (line 35037) | enum axp717_irqs {
type axp803_irqs (line 35071) | enum axp803_irqs {
type axp806_irqs (line 35108) | enum axp806_irqs {
type axp809_irqs (line 35123) | enum axp809_irqs {
type bam_command_type (line 35158) | enum bam_command_type {
type bam_reg (line 35163) | enum bam_reg {
type base_type (line 35192) | enum base_type {
type batadv_packettype (line 35199) | enum batadv_packettype {
type bcm2835_fsel (line 35213) | enum bcm2835_fsel {
type bcm_iproc_i2c_type (line 35218) | enum bcm_iproc_i2c_type {
type bcm_usb_phy_ctrl_bits (line 35223) | enum bcm_usb_phy_ctrl_bits {
type bcm_usb_phy_reg (line 35229) | enum bcm_usb_phy_reg {
type bcm_usb_phy_type (line 35235) | enum bcm_usb_phy_type {
type bcm_usb_phy_version (line 35240) | enum bcm_usb_phy_version {
type bcma_hosttype (line 35245) | enum bcma_hosttype {
type bcmasp_stat_type (line 35251) | enum bcmasp_stat_type {
type bd9571mwv_irqs (line 35258) | enum bd9571mwv_irqs {
type bd9571mwv_regulators (line 35269) | enum bd9571mwv_regulators {
type bdc_ep0_state (line 35277) | enum bdc_ep0_state {
type bdc_link_state (line 35286) | enum bdc_link_state {
type bdcr_cmd_class (line 35293) | enum bdcr_cmd_class {
type behavior (line 35309) | enum behavior {
type bfqq_expiration (line 35315) | enum bfqq_expiration {
type bfqq_state_flags (line 35323) | enum bfqq_state_flags {
type bgmac_dma_ring_type (line 35338) | enum bgmac_dma_ring_type {
type bh_state_bits (line 35343) | enum bh_state_bits {
type bhb_mitigation_bits (line 35363) | enum bhb_mitigation_bits {
type bio_merge_status (line 35370) | enum bio_merge_status {
type bio_post_read_step (line 35376) | enum bio_post_read_step {
type bios_platform_class (line 35383) | enum bios_platform_class {
type bip_flags (line 35388) | enum bip_flags {
type bkops_status (line 35399) | enum bkops_status {
type blacklist_hash_type (line 35407) | enum blacklist_hash_type {
type blake2s_iv (line 35412) | enum blake2s_iv {
type blake2s_lengths (line 35423) | enum blake2s_lengths {
type blk_crypto_mode_num (line 35433) | enum blk_crypto_mode_num {
type blk_default_limits (line 35442) | enum blk_default_limits {
type blk_eh_timer_return (line 35449) | enum blk_eh_timer_return {
type blk_integrity_checksum (line 35454) | enum blk_integrity_checksum {
type blk_integrity_flags (line 35461) | enum blk_integrity_flags {
type blk_req_status (line 35469) | enum blk_req_status {
type blk_unique_id (line 35477) | enum blk_unique_id {
type blkg_iostat_type (line 35483) | enum blkg_iostat_type {
type blkg_rwstat_type (line 35490) | enum blkg_rwstat_type {
type blkif_state (line 35500) | enum blkif_state {
type blktrace_act (line 35507) | enum blktrace_act {
type bm_rcr_cmode (line 35528) | enum bm_rcr_cmode {
type bm_rcr_pmode (line 35533) | enum bm_rcr_pmode {
type board_ids (line 35539) | enum board_ids {
type bp_state (line 35564) | enum bp_state {
type bp_type_idx (line 35571) | enum bp_type_idx {
type bpf_access_src (line 35577) | enum bpf_access_src {
type bpf_access_type (line 35582) | enum bpf_access_type {
type bpf_addr_space_cast (line 35587) | enum bpf_addr_space_cast {
type bpf_adj_room_mode (line 35591) | enum bpf_adj_room_mode {
type bpf_arg_type (line 35596) | enum bpf_arg_type {
type bpf_async_type (line 35633) | enum bpf_async_type {
type bpf_attach_type (line 35638) | enum bpf_attach_type {
type bpf_audit (line 35700) | enum bpf_audit {
type bpf_cgroup_iter_order (line 35706) | enum bpf_cgroup_iter_order {
type bpf_cgroup_storage_type (line 35714) | enum bpf_cgroup_storage_type {
type bpf_check_mtu_flags (line 35720) | enum bpf_check_mtu_flags {
type bpf_check_mtu_ret (line 35724) | enum bpf_check_mtu_ret {
type bpf_cmd (line 35730) | enum bpf_cmd {
type bpf_cond_pseudo_jmp (line 35772) | enum bpf_cond_pseudo_jmp {
type bpf_core_relo_kind (line 35776) | enum bpf_core_relo_kind {
type bpf_dynptr_type (line 35792) | enum bpf_dynptr_type {
type bpf_func_id (line 35800) | enum bpf_func_id {
type bpf_hdr_start_off (line 36016) | enum bpf_hdr_start_off {
type bpf_iter_feature (line 36021) | enum bpf_iter_feature {
type bpf_iter_state (line 36025) | enum bpf_iter_state {
type bpf_iter_task_type (line 36031) | enum bpf_iter_task_type {
type bpf_jit_poke_reason (line 36037) | enum bpf_jit_poke_reason {
type bpf_kfunc_flags (line 36041) | enum bpf_kfunc_flags {
type bpf_link_type (line 36045) | enum bpf_link_type {
type bpf_lru_list_type (line 36064) | enum bpf_lru_list_type {
type bpf_map_type (line 36072) | enum bpf_map_type {
type bpf_netdev_command (line 36112) | enum bpf_netdev_command {
type bpf_perf_event_type (line 36120) | enum bpf_perf_event_type {
type bpf_prog_type (line 36130) | enum bpf_prog_type {
type bpf_reg_liveness (line 36167) | enum bpf_reg_liveness {
type bpf_reg_type (line 36176) | enum bpf_reg_type {
type bpf_ret_code (line 36208) | enum bpf_ret_code {
type bpf_return_type (line 36216) | enum bpf_return_type {
type bpf_stack_build_id_status (line 36238) | enum bpf_stack_build_id_status {
type bpf_stack_slot_type (line 36244) | enum bpf_stack_slot_type {
type bpf_stats_type (line 36254) | enum bpf_stats_type {
type bpf_struct_ops_state (line 36258) | enum bpf_struct_ops_state {
type bpf_struct_walk_result (line 36265) | enum bpf_struct_walk_result {
type bpf_task_fd_type (line 36271) | enum bpf_task_fd_type {
type bpf_task_vma_iter_find_op (line 36280) | enum bpf_task_vma_iter_find_op {
type bpf_text_poke_type (line 36286) | enum bpf_text_poke_type {
type bpf_tramp_prog_type (line 36291) | enum bpf_tramp_prog_type {
type bpf_type (line 36299) | enum bpf_type {
type bpf_type_flag (line 36306) | enum bpf_type_flag {
type bpf_xdp_mode (line 36330) | enum bpf_xdp_mode {
type bq27xxx_chip (line 36337) | enum bq27xxx_chip {
type bq27xxx_dm_reg_id (line 36371) | enum bq27xxx_dm_reg_id {
type bq27xxx_reg_index (line 36377) | enum bq27xxx_reg_index {
type brcm_family_type (line 36405) | enum brcm_family_type {
type brcm_sata_phy_rxaeq_mode (line 36420) | enum brcm_sata_phy_rxaeq_mode {
type brcm_sata_phy_version (line 36426) | enum brcm_sata_phy_version {
type brcm_usb_phy_id (line 36436) | enum brcm_usb_phy_id {
type brcmstb_memc_hwtype (line 36442) | enum brcmstb_memc_hwtype {
type brcmusb_reg_sel (line 36448) | enum brcmusb_reg_sel {
type bsc_xfer_cmd (line 36458) | enum bsc_xfer_cmd {
type btf_arg_tag (line 36465) | enum btf_arg_tag {
type btf_field_iter_kind (line 36473) | enum btf_field_iter_kind {
type btf_field_type (line 36478) | enum btf_field_type {
type btf_func_linkage (line 36496) | enum btf_func_linkage {
type btf_kfunc_hook (line 36502) | enum btf_kfunc_hook {
type buf_type (line 36520) | enum buf_type {
type buffer_map_state (line 36526) | enum buffer_map_state {
type bug_trap_type (line 36532) | enum bug_trap_type {
type bus_notifier_event (line 36538) | enum bus_notifier_event {
type bus_speeds (line 36549) | enum bus_speeds {
type cache_indexing (line 36560) | enum cache_indexing {
type cache_type (line 36566) | enum cache_type {
type cache_write_policy (line 36574) | enum cache_write_policy {
type cavium_mdiobus_mode (line 36580) | enum cavium_mdiobus_mode {
type cc_attr (line 36586) | enum cc_attr {
type cd_types (line 36597) | enum cd_types {
type cfi_quirks (line 36604) | enum cfi_quirks {
type cgroup1_param (line 36608) | enum cgroup1_param {
type cgroup2_param (line 36621) | enum cgroup2_param {
type cgroup_bpf_attach_type (line 36631) | enum cgroup_bpf_attach_type {
type cgroup_filetype (line 36666) | enum cgroup_filetype {
type cgroup_opt_features (line 36671) | enum cgroup_opt_features {
type cgroup_subsys_id (line 36675) | enum cgroup_subsys_id {
type cgt_group_id (line 36689) | enum cgt_group_id {
type ch_command (line 36767) | enum ch_command {
type ch_state (line 36774) | enum ch_state {
type chacha_constants (line 36782) | enum chacha_constants {
type chip_id (line 36789) | enum chip_id {
type chips (line 36802) | enum chips {
type ci_hw_regs (line 36809) | enum ci_hw_regs {
type ci_revision (line 36837) | enum ci_revision {
type ci_role (line 36849) | enum ci_role {
type clear_refs_types (line 36855) | enum clear_refs_types {
type clk_gating_state (line 36864) | enum clk_gating_state {
type clk_id (line 36871) | enum clk_id {
type clk_id___2 (line 37188) | enum clk_id___2 {
type clk_ids (line 37202) | enum clk_ids {
type clk_ids___2 (line 37237) | enum clk_ids___2 {
type clk_ids___3 (line 37262) | enum clk_ids___3 {
type clk_ids___4 (line 37305) | enum clk_ids___4 {
type clk_ids___5 (line 37331) | enum clk_ids___5 {
type clk_ids___6 (line 37344) | enum clk_ids___6 {
type clk_ids___7 (line 37377) | enum clk_ids___7 {
type clk_ids___8 (line 37406) | enum clk_ids___8 {
type clk_ids___9 (line 37428) | enum clk_ids___9 {
type clk_ids___10 (line 37451) | enum clk_ids___10 {
type clk_ids___11 (line 37474) | enum clk_ids___11 {
type clk_ids___12 (line 37497) | enum clk_ids___12 {
type clk_ids___13 (line 37526) | enum clk_ids___13 {
type clk_ids___14 (line 37551) | enum clk_ids___14 {
type clk_ids___15 (line 37576) | enum clk_ids___15 {
type clk_ids___16 (line 37600) | enum clk_ids___16 {
type clk_ids___17 (line 37622) | enum clk_ids___17 {
type clk_ids___18 (line 37642) | enum clk_ids___18 {
type clk_ids___19 (line 37663) | enum clk_ids___19 {
type clk_ids___20 (line 37679) | enum clk_ids___20 {
type clk_reg_layout (line 37714) | enum clk_reg_layout {
type clk_sel (line 37720) | enum clk_sel {
type clk_state (line 37733) | enum clk_state {
type clk_type (line 37740) | enum clk_type {
type clk_type_t (line 37745) | enum clk_type_t {
type clk_types (line 37751) | enum clk_types {
type clk_types___2 (line 37758) | enum clk_types___2 {
type clk_types___3 (line 37772) | enum clk_types___3 {
type clock_event_state (line 37781) | enum clock_event_state {
type clocksource_ids (line 37789) | enum clocksource_ids {
type cmd_db_hw_type (line 37800) | enum cmd_db_hw_type {
type cmis_cdb_fw_write_mechanism (line 37810) | enum cmis_cdb_fw_write_mechanism {
type cmu_type_t (line 37817) | enum cmu_type_t {
type compact_priority (line 37822) | enum compact_priority {
type compact_result (line 37832) | enum compact_result {
type compat_regset (line 37844) | enum compat_regset {
type con_flush_mode (line 37849) | enum con_flush_mode {
type con_msg_format_flags (line 37854) | enum con_msg_format_flags {
type con_scroll (line 37859) | enum con_scroll {
type cons_flags (line 37864) | enum cons_flags {
type cpi_algorithm_type (line 37876) | enum cpi_algorithm_type {
type cpio_fields (line 37883) | enum cpio_fields {
type cppc_regs (line 37901) | enum cppc_regs {
type cppi5_tr_event_size (line 37925) | enum cppi5_tr_event_size {
type cppi5_tr_trigger (line 37933) | enum cppi5_tr_trigger {
type cppi5_tr_trigger_type (line 37941) | enum cppi5_tr_trigger_type {
type cppi5_tr_types (line 37949) | enum cppi5_tr_types {
type cpsw_ale_control (line 37964) | enum cpsw_ale_control {
type cpsw_ale_port_state (line 37995) | enum cpsw_ale_port_state {
type cpsw_sl_regs (line 38002) | enum cpsw_sl_regs {
type cpu_idle_type (line 38016) | enum cpu_idle_type {
type cpu_led_event (line 38023) | enum cpu_led_event {
type cpu_mitigations (line 38031) | enum cpu_mitigations {
type cpu_pm_event (line 38037) | enum cpu_pm_event {
type cpu_usage_stat (line 38046) | enum cpu_usage_stat {
type cpuacct_stat_index (line 38060) | enum cpuacct_stat_index {
type cpubiuctrl_regs (line 38066) | enum cpubiuctrl_regs {
type cpufreq_table_sorting (line 38075) | enum cpufreq_table_sorting {
type cpuhp_smt_control (line 38081) | enum cpuhp_smt_control {
type cpuhp_state (line 38089) | enum cpuhp_state {
type cpuhp_sync_state (line 38275) | enum cpuhp_sync_state {
type createmode4 (line 38284) | enum createmode4 {
type criteria (line 38291) | enum criteria {
type crypto_attr_type_t (line 38300) | enum crypto_attr_type_t {
type csr_regs (line 38327) | enum csr_regs {
type csr_target (line 38417) | enum csr_target {
type ct_dccp_states (line 38421) | enum ct_dccp_states {
type cti_port_type (line 38435) | enum cti_port_type {
type ctx_state (line 38446) | enum ctx_state {
type cxl_event_type (line 38455) | enum cxl_event_type {
type d_real_type (line 38462) | enum d_real_type {
type d_walk_ret (line 38467) | enum d_walk_ret {
type dart_type (line 38474) | enum dart_type {
type data_content4 (line 38480) | enum data_content4 {
type dbc_state (line 38485) | enum dbc_state {
type dbg_active_el (line 38494) | enum dbg_active_el {
type dbgfs_get_mode (line 38499) | enum dbgfs_get_mode {
type dccp_state (line 38505) | enum dccp_state {
type dd_data_dir (line 38521) | enum dd_data_dir {
type dd_prio (line 38526) | enum dd_prio {
type debug_counters (line 38533) | enum debug_counters {
type dentry_d_lock_class (line 38551) | enum dentry_d_lock_class {
type depot_counter_id (line 38556) | enum depot_counter_id {
type desc_header_offset (line 38566) | enum desc_header_offset {
type desc_id (line 38571) | enum desc_id {
type desc_idn (line 38576) | enum desc_idn {
type desc_state (line 38590) | enum desc_state {
type desc_state___2 (line 38598) | enum desc_state___2 {
type desc_status (line 38605) | enum desc_status {
type dev_cmd_type (line 38613) | enum dev_cmd_type {
type dev_dma_attr (line 38619) | enum dev_dma_attr {
type dev_pm_opp_event (line 38625) | enum dev_pm_opp_event {
type dev_pm_qos_req_type (line 38633) | enum dev_pm_qos_req_type {
type dev_prop_type (line 38641) | enum dev_prop_type {
type dev_status (line 38650) | enum dev_status {
type dev_type (line 38656) | enum dev_type {
type devcg_behavior (line 38667) | enum devcg_behavior {
type devfreq_parent_dev_type (line 38673) | enum devfreq_parent_dev_type {
type devfreq_timer (line 38678) | enum devfreq_timer {
type device_desc_param (line 38684) | enum device_desc_param {
type device_id (line 38728) | enum device_id {
type device_link_state (line 38733) | enum device_link_state {
type device_physical_location_horizontal_position (line 38742) | enum device_physical_location_horizontal_position {
type device_physical_location_panel (line 38748) | enum device_physical_location_panel {
type device_physical_location_vertical_position (line 38758) | enum device_physical_location_vertical_position {
type device_removable (line 38764) | enum device_removable {
type devkmsg_log_bits (line 38771) | enum devkmsg_log_bits {
type devkmsg_log_masks (line 38777) | enum devkmsg_log_masks {
type devlink_attr (line 38783) | enum devlink_attr {
type devlink_attr_selftest_id (line 38968) | enum devlink_attr_selftest_id {
type devlink_attr_selftest_result (line 38975) | enum devlink_attr_selftest_result {
type devlink_command (line 38984) | enum devlink_command {
type devlink_dpipe_action_type (line 39074) | enum devlink_dpipe_action_type {
type devlink_dpipe_field_ethernet_id (line 39078) | enum devlink_dpipe_field_ethernet_id {
type devlink_dpipe_field_ipv4_id (line 39082) | enum devlink_dpipe_field_ipv4_id {
type devlink_dpipe_field_ipv6_id (line 39086) | enum devlink_dpipe_field_ipv6_id {
type devlink_dpipe_field_mapping_type (line 39090) | enum devlink_dpipe_field_mapping_type {
type devlink_dpipe_header_id (line 39095) | enum devlink_dpipe_header_id {
type devlink_dpipe_match_type (line 39101) | enum devlink_dpipe_match_type {
type devlink_eswitch_encap_mode (line 39105) | enum devlink_eswitch_encap_mode {
type devlink_health_reporter_state (line 39110) | enum devlink_health_reporter_state {
type devlink_info_version_type (line 39115) | enum devlink_info_version_type {
type devlink_linecard_state (line 39120) | enum devlink_linecard_state {
type devlink_multicast_groups (line 39132) | enum devlink_multicast_groups {
type devlink_param_cmode (line 39136) | enum devlink_param_cmode {
type devlink_param_generic_id (line 39144) | enum devlink_param_generic_id {
type devlink_param_type (line 39166) | enum devlink_param_type {
type devlink_port_flavour (line 39174) | enum devlink_port_flavour {
type devlink_port_fn_attr_cap (line 39185) | enum devlink_port_fn_attr_cap {
type devlink_port_fn_opstate (line 39193) | enum devlink_port_fn_opstate {
type devlink_port_fn_state (line 39198) | enum devlink_port_fn_state {
type devlink_port_function_attr (line 39203) | enum devlink_port_function_attr {
type devlink_port_type (line 39215) | enum devlink_port_type {
type devlink_rate_type (line 39222) | enum devlink_rate_type {
type devlink_reload_action (line 39227) | enum devlink_reload_action {
type devlink_reload_limit (line 39235) | enum devlink_reload_limit {
type devlink_resource_unit (line 39242) | enum devlink_resource_unit {
type devlink_sb_pool_type (line 39246) | enum devlink_sb_pool_type {
type devlink_sb_threshold_type (line 39251) | enum devlink_sb_threshold_type {
type devlink_selftest_status (line 39256) | enum devlink_selftest_status {
type devlink_trap_action (line 39262) | enum devlink_trap_action {
type devlink_trap_generic_id (line 39268) | enum devlink_trap_generic_id {
type devlink_trap_group_generic_id (line 39367) | enum devlink_trap_group_generic_id {
type devlink_trap_type (line 39399) | enum devlink_trap_type {
type devm_ioremap_type (line 39405) | enum devm_ioremap_type {
type dew_regs (line 39412) | enum dew_regs {
type dfll_ctrl_mode (line 39472) | enum dfll_ctrl_mode {
type dfll_tune_range (line 39479) | enum dfll_tune_range {
type die_val (line 39484) | enum die_val {
type dim_cq_period_mode (line 39489) | enum dim_cq_period_mode {
type dim_state (line 39495) | enum dim_state {
type dim_stats_state (line 39501) | enum dim_stats_state {
type dim_step_result (line 39507) | enum dim_step_result {
type dim_tune_state (line 39513) | enum dim_tune_state {
type discover_event (line 39520) | enum discover_event {
type display_flags (line 39528) | enum display_flags {
type dl_bw_request (line 39544) | enum dl_bw_request {
type dl_dev_state (line 39550) | enum dl_dev_state {
type dll_reset_type (line 39557) | enum dll_reset_type {
type dma_channel_status (line 39563) | enum dma_channel_status {
type dma_ctrl_flags (line 39571) | enum dma_ctrl_flags {
type dma_data_direction (line 39584) | enum dma_data_direction {
type dma_desc_metadata_mode (line 39591) | enum dma_desc_metadata_mode {
type dma_fence_flag_bits (line 39597) | enum dma_fence_flag_bits {
type dma_residue_granularity (line 39604) | enum dma_residue_granularity {
type dma_resv_usage (line 39610) | enum dma_resv_usage {
type dma_rx_status (line 39617) | enum dma_rx_status {
type dma_slave_buswidth (line 39623) | enum dma_slave_buswidth {
type dma_status (line 39636) | enum dma_status {
type dma_transaction_type (line 39644) | enum dma_transaction_type {
type dma_transfer_direction (line 39664) | enum dma_transfer_direction {
type dmaengine_alignment (line 39672) | enum dmaengine_alignment {
type dmaengine_tx_result (line 39684) | enum dmaengine_tx_result {
type dmamov_dst (line 39691) | enum dmamov_dst {
type dmi_device_type (line 39697) | enum dmi_device_type {
type dmi_entry_type (line 39715) | enum dmi_entry_type {
type dmi_field (line 39762) | enum dmi_field {
type dns_lookup_status (line 39790) | enum dns_lookup_status {
type dns_payload_content_type (line 39802) | enum dns_payload_content_type {
type dpaa2_eth_fq_type (line 39806) | enum dpaa2_eth_fq_type {
type dpaa2_eth_rx_dist (line 39812) | enum dpaa2_eth_rx_dist {
type dpaa2_eth_swa_type (line 39817) | enum dpaa2_eth_swa_type {
type dpaa2_fd_format (line 39825) | enum dpaa2_fd_format {
type dpaa_fq_type (line 39831) | enum dpaa_fq_type {
type dpfe_commands (line 39841) | enum dpfe_commands {
type dpfe_msg_fields (line 39848) | enum dpfe_msg_fields {
type dpio_channel_mode (line 39856) | enum dpio_channel_mode {
type dpkg_extract_from_hdr_type (line 39861) | enum dpkg_extract_from_hdr_type {
type dpkg_extract_type (line 39867) | enum dpkg_extract_type {
type dpm_order (line 39873) | enum dpm_order {
type dpmac_counter_id (line 39880) | enum dpmac_counter_id {
type dpmac_eth_if (line 39911) | enum dpmac_eth_if {
type dpmac_link_type (line 39926) | enum dpmac_link_type {
type dpni_congestion_point (line 39933) | enum dpni_congestion_point {
type dpni_congestion_unit (line 39938) | enum dpni_congestion_unit {
type dpni_dest (line 39943) | enum dpni_dest {
type dpni_dist_mode (line 39949) | enum dpni_dist_mode {
type dpni_error_action (line 39955) | enum dpni_error_action {
type dpni_fs_miss_action (line 39961) | enum dpni_fs_miss_action {
type dpni_offload (line 39967) | enum dpni_offload {
type dpni_queue_type (line 39974) | enum dpni_queue_type {
type dprc_region_type (line 39981) | enum dprc_region_type {
type drbg_prefixes (line 39987) | enum drbg_prefixes {
type drbg_seed_state (line 39994) | enum drbg_seed_state {
type drm_panel_orientation (line 40000) | enum drm_panel_orientation {
type drvtype (line 40008) | enum drvtype {
type dsa_db_type (line 40013) | enum dsa_db_type {
type dsa_tag_protocol (line 40019) | enum dsa_tag_protocol {
type dsaf_mode (line 40051) | enum dsaf_mode {
type dsaf_port_rate_mode (line 40072) | enum dsaf_port_rate_mode {
type dsaf_stp_port_type (line 40078) | enum dsaf_stp_port_type {
type dsaf_sw_port_type (line 40086) | enum dsaf_sw_port_type {
type dspi_trans_mode (line 40092) | enum dspi_trans_mode {
type dw_edma_chip_flags (line 40097) | enum dw_edma_chip_flags {
type dw_edma_map_format (line 40101) | enum dw_edma_map_format {
type dw_mci_cookie (line 40108) | enum dw_mci_cookie {
type dw_mci_exynos_type (line 40114) | enum dw_mci_exynos_type {
type dw_mci_state (line 40125) | enum dw_mci_state {
type dw_pcie_app_clk (line 40136) | enum dw_pcie_app_clk {
type dw_pcie_app_rst (line 40143) | enum dw_pcie_app_rst {
type dw_pcie_core_clk (line 40150) | enum dw_pcie_core_clk {
type dw_pcie_core_rst (line 40158) | enum dw_pcie_core_rst {
type dw_pcie_device_mode (line 40169) | enum dw_pcie_device_mode {
type dw_pcie_ltssm (line 40176) | enum dw_pcie_ltssm {
type dw_wdt_rmod (line 40185) | enum dw_wdt_rmod {
type dwc2_control_phase (line 40190) | enum dwc2_control_phase {
type dwc2_ep0_state (line 40196) | enum dwc2_ep0_state {
type dwc2_halt_status (line 40204) | enum dwc2_halt_status {
type dwc2_hsotg_dmamode (line 40221) | enum dwc2_hsotg_dmamode {
type dwc2_lx_state (line 40227) | enum dwc2_lx_state {
type dwc2_transaction_type (line 40234) | enum dwc2_transaction_type {
type dwc3_ep0_next (line 40241) | enum dwc3_ep0_next {
type dwc3_ep0_state (line 40248) | enum dwc3_ep0_state {
type dwc3_link_state (line 40255) | enum dwc3_link_state {
type dwcmshc_rk_type (line 40273) | enum dwcmshc_rk_type {
type dynevent_type (line 40278) | enum dynevent_type {
type e1000_1000t_rx_status (line 40284) | enum e1000_1000t_rx_status {
type e1000_boards (line 40290) | enum e1000_boards {
type e1000_bus_speed (line 40310) | enum e1000_bus_speed {
type e1000_bus_type (line 40322) | enum e1000_bus_type {
type e1000_bus_width (line 40330) | enum e1000_bus_width {
type e1000_fc_mode (line 40341) | enum e1000_fc_mode {
type e1000_mac_type (line 40349) | enum e1000_mac_type {
type e1000_mac_type___2 (line 40356) | enum e1000_mac_type___2 {
type e1000_mac_type___3 (line 40379) | enum e1000_mac_type___3 {
type e1000_media_type (line 40391) | enum e1000_media_type {
type e1000_mng_mode (line 40399) | enum e1000_mng_mode {
type e1000_ms_type (line 40407) | enum e1000_ms_type {
type e1000_nvm_override (line 40414) | enum e1000_nvm_override {
type e1000_nvm_type (line 40420) | enum e1000_nvm_type {
type e1000_nvm_type___2 (line 40429) | enum e1000_nvm_type___2 {
type e1000_phy_type (line 40437) | enum e1000_phy_type {
type e1000_phy_type___2 (line 40453) | enum e1000_phy_type___2 {
type e1000_rev_polarity (line 40467) | enum e1000_rev_polarity {
type e1000_ring_flags_t (line 40473) | enum e1000_ring_flags_t {
type e1000_serdes_link_state (line 40483) | enum e1000_serdes_link_state {
type e1000_smart_speed (line 40490) | enum e1000_smart_speed {
type e1000_state_t (line 40496) | enum e1000_state_t {
type e1000_state_t___2 (line 40503) | enum e1000_state_t___2 {
type e1000_state_t___3 (line 40510) | enum e1000_state_t___3 {
type e1000_ulp_state (line 40517) | enum e1000_ulp_state {
type ec_charge_control_cmd (line 40523) | enum ec_charge_control_cmd {
type ec_charge_control_mode (line 40528) | enum ec_charge_control_mode {
type ec_comms_status (line 40535) | enum ec_comms_status {
type ec_console_read_subcmd (line 40539) | enum ec_console_read_subcmd {
type ec_feature_code (line 40544) | enum ec_feature_code {
type ec_led_colors (line 40601) | enum ec_led_colors {
type ec_mkbp_event (line 40611) | enum ec_mkbp_event {
type ec_mkbp_info_type (line 40626) | enum ec_mkbp_info_type {
type ec_reboot_cmd (line 40632) | enum ec_reboot_cmd {
type ec_status (line 40643) | enum ec_status {
type ec_temp_thresholds (line 40667) | enum ec_temp_thresholds {
type ec_vbnvcontext_op (line 40674) | enum ec_vbnvcontext_op {
type edac_mc_layer_type (line 40679) | enum edac_mc_layer_type {
type edac_type (line 40687) | enum edac_type {
type efi_cmdline_option (line 40700) | enum efi_cmdline_option {
type efi_rts_ids (line 40708) | enum efi_rts_ids {
type efi_secureboot_mode (line 40725) | enum efi_secureboot_mode {
type efistub_event_type (line 40732) | enum efistub_event_type {
type ehci_hrtimer_event (line 40738) | enum ehci_hrtimer_event {
type ehci_rh_state (line 40754) | enum ehci_rh_state {
type eint_type (line 40761) | enum eint_type {
type elv_merge (line 40768) | enum elv_merge {
type enable_type (line 40775) | enum enable_type {
type enetc_active_offloads (line 40783) | enum enetc_active_offloads {
type enetc_bdr_type (line 40794) | enum enetc_bdr_type {
type enetc_errata (line 40799) | enum enetc_errata {
type enetc_flags_bit (line 40804) | enum enetc_flags_bit {
type enetc_ic_mode (line 40809) | enum enetc_ic_mode {
type enetc_mac_addr_type (line 40816) | enum enetc_mac_addr_type {
type enetc_msg_cmd_action_type (line 40822) | enum enetc_msg_cmd_action_type {
type enetc_msg_cmd_status (line 40827) | enum enetc_msg_cmd_status {
type enetc_msg_cmd_type (line 40832) | enum enetc_msg_cmd_type {
type enetc_txbd_flags (line 40838) | enum enetc_txbd_flags {
type enetc_vf_flags (line 40849) | enum enetc_vf_flags {
type enum_gate_cfg (line 40853) | enum enum_gate_cfg {
type enum_mux_cfg (line 40975) | enum enum_mux_cfg {
type err_code (line 40990) | enum err_code {
type error_detector (line 40995) | enum error_detector {
type ether_type_algorithm (line 41001) | enum ether_type_algorithm {
type ethnl_sock_type (line 41009) | enum ethnl_sock_type {
type ethtool_c33_pse_admin_state (line 41013) | enum ethtool_c33_pse_admin_state {
type ethtool_c33_pse_ext_state (line 41019) | enum ethtool_c33_pse_ext_state {
type ethtool_c33_pse_ext_substate_error_condition (line 41031) | enum ethtool_c33_pse_ext_substate_error_condition {
type ethtool_c33_pse_ext_substate_mr_pse_enable (line 41043) | enum ethtool_c33_pse_ext_substate_mr_pse_enable {
type ethtool_c33_pse_ext_substate_option_detect_ted (line 41047) | enum ethtool_c33_pse_ext_substate_option_detect_ted {
type ethtool_c33_pse_ext_substate_option_vport_lim (line 41052) | enum ethtool_c33_pse_ext_substate_option_vport_lim {
type ethtool_c33_pse_ext_substate_ovld_detected (line 41058) | enum ethtool_c33_pse_ext_substate_ovld_detected {
type ethtool_c33_pse_ext_substate_power_not_available (line 41062) | enum ethtool_c33_pse_ext_substate_power_not_available {
type ethtool_c33_pse_ext_substate_short_detected (line 41069) | enum ethtool_c33_pse_ext_substate_short_detected {
type ethtool_c33_pse_pw_d_status (line 41073) | enum ethtool_c33_pse_pw_d_status {
type ethtool_cmis_cdb_cmd_id (line 41083) | enum ethtool_cmis_cdb_cmd_id {
type ethtool_fec_config_bits (line 41095) | enum ethtool_fec_config_bits {
type ethtool_flags (line 41104) | enum ethtool_flags {
type ethtool_header_flags (line 41112) | enum ethtool_header_flags {
type ethtool_link_ext_state (line 41118) | enum ethtool_link_ext_state {
type ethtool_link_ext_substate_autoneg (line 41132) | enum ethtool_link_ext_substate_autoneg {
type ethtool_link_ext_substate_bad_signal_integrity (line 41141) | enum ethtool_link_ext_substate_bad_signal_integrity {
type ethtool_link_ext_substate_cable_issue (line 41148) | enum ethtool_link_ext_substate_cable_issue {
type ethtool_link_ext_substate_link_logical_mismatch (line 41153) | enum ethtool_link_ext_substate_link_logical_mismatch {
type ethtool_link_ext_substate_link_training (line 41161) | enum ethtool_link_ext_substate_link_training {
type ethtool_link_ext_substate_module (line 41168) | enum ethtool_link_ext_substate_module {
type ethtool_link_mode_bit_indices (line 41172) | enum ethtool_link_mode_bit_indices {
type ethtool_mac_stats_src (line 41279) | enum ethtool_mac_stats_src {
type ethtool_mm_verify_status (line 41285) | enum ethtool_mm_verify_status {
type ethtool_module_fw_flash_status (line 41294) | enum ethtool_module_fw_flash_status {
type ethtool_module_power_mode (line 41301) | enum ethtool_module_power_mode {
type ethtool_module_power_mode_policy (line 41306) | enum ethtool_module_power_mode_policy {
type ethtool_multicast_groups (line 41311) | enum ethtool_multicast_groups {
type ethtool_phys_id_state (line 41315) | enum ethtool_phys_id_state {
type ethtool_podl_pse_admin_state (line 41322) | enum ethtool_podl_pse_admin_state {
type ethtool_podl_pse_pw_d_status (line 41328) | enum ethtool_podl_pse_pw_d_status {
type ethtool_reset_flags (line 41338) | enum ethtool_reset_flags {
type ethtool_sfeatures_retval_bits (line 41352) | enum ethtool_sfeatures_retval_bits {
type ethtool_stringset (line 41358) | enum ethtool_stringset {
type ethtool_supported_ring_param (line 41385) | enum ethtool_supported_ring_param {
type ethtool_tcp_data_split (line 41395) | enum ethtool_tcp_data_split {
type ethtool_test_flags (line 41401) | enum ethtool_test_flags {
type event_command_flags (line 41408) | enum event_command_flags {
type event_trigger_type (line 41413) | enum event_trigger_type {
type event_type_t (line 41424) | enum event_type_t {
type ex_phy_state (line 41435) | enum ex_phy_state {
type exact_level (line 41442) | enum exact_level {
type exception_type (line 41448) | enum exception_type {
type exec_status (line 41455) | enum exec_status {
type execmem_range_flags (line 41475) | enum execmem_range_flags {
type execmem_type (line 41480) | enum execmem_type {
type ext4_journal_trigger_type (line 41490) | enum ext4_journal_trigger_type {
type ext4_li_mode (line 41495) | enum ext4_li_mode {
type exynos5_usbdrd_phy_id (line 41500) | enum exynos5_usbdrd_phy_id {
type exynos5_usbdrd_phy_tuning_state (line 41506) | enum exynos5_usbdrd_phy_tuning_state {
type exynos_cpuclk_layout (line 41515) | enum exynos_cpuclk_layout {
type exynos_mipi_phy_id (line 41522) | enum exynos_mipi_phy_id {
type exynos_mipi_phy_regmap_id (line 41532) | enum exynos_mipi_phy_regmap_id {
type exynos_usi_ver (line 41540) | enum exynos_usi_ver {
type fail_dup_mod_reason (line 41544) | enum fail_dup_mod_reason {
type fan53555_vendor (line 41549) | enum fan53555_vendor {
type fanotify_event_type (line 41558) | enum fanotify_event_type {
type fault_flag (line 41568) | enum fault_flag {
type fbq_type (line 41584) | enum fbq_type {
type fec_txbuf_type (line 41590) | enum fec_txbuf_type {
type fetch_op (line 41596) | enum fetch_op {
type fg_filter_id (line 41624) | enum fg_filter_id {
type fgt_group_id (line 41630) | enum fgt_group_id {
type fh_pll_id (line 41640) | enum fh_pll_id {
type fh_pll_id___2 (line 41655) | enum fh_pll_id___2 {
type fh_pll_id___3 (line 41668) | enum fh_pll_id___3 {
type fh_pll_id___4 (line 41687) | enum fh_pll_id___4 {
type fh_pll_id___5 (line 41706) | enum fh_pll_id___5 {
type fhctl_variant (line 41723) | enum fhctl_variant {
type fib_event_type (line 41728) | enum fib_event_type {
type fid_type (line 41741) | enum fid_type {
type fifo_dump_mode_v3_hw (line 41763) | enum fifo_dump_mode_v3_hw {
type fifo_trigger_mode_v3_hw (line 41769) | enum fifo_trigger_mode_v3_hw {
type file_time_flags (line 41775) | enum file_time_flags {
type filter_op_ids (line 41782) | enum filter_op_ids {
type filter_pred_fn (line 41794) | enum filter_pred_fn {
type fiq_hwirq (line 41827) | enum fiq_hwirq {
type fit_type (line 41838) | enum fit_type {
type fixed_addresses (line 41846) | enum fixed_addresses {
type flag_idn (line 41869) | enum flag_idn {
type flow_action_hw_stats (line 41888) | enum flow_action_hw_stats {
type flow_action_hw_stats_bit (line 41896) | enum flow_action_hw_stats_bit {
type flow_action_id (line 41903) | enum flow_action_id {
type flow_action_mangle_base (line 41943) | enum flow_action_mangle_base {
type flow_block_binder_type (line 41952) | enum flow_block_binder_type {
type flow_block_command (line 41960) | enum flow_block_command {
type flow_cls_command (line 41965) | enum flow_cls_command {
type flow_control (line 41973) | enum flow_control {
type flow_dissect_ret (line 41980) | enum flow_dissect_ret {
type flow_dissector_ctrl_flags (line 41988) | enum flow_dissector_ctrl_flags {
type flow_dissector_key_id (line 41998) | enum flow_dissector_key_id {
type fman_dma_aid_mode (line 42035) | enum fman_dma_aid_mode {
type fman_event_modules (line 42040) | enum fman_event_modules {
type fman_exceptions (line 42046) | enum fman_exceptions {
type fman_inter_module_event (line 42066) | enum fman_inter_module_event {
type fman_intr_type (line 42094) | enum fman_intr_type {
type fman_mac_exceptions (line 42099) | enum fman_mac_exceptions {
type fman_port_color (line 42138) | enum fman_port_color {
type fman_port_deq_prefetch (line 42145) | enum fman_port_deq_prefetch {
type fman_port_deq_type (line 42151) | enum fman_port_deq_type {
type fman_port_dma_swap (line 42157) | enum fman_port_dma_swap {
type fman_port_type (line 42163) | enum fman_port_type {
type folio_references (line 42168) | enum folio_references {
type folio_walk_level (line 42175) | enum folio_walk_level {
type format_state (line 42181) | enum format_state {
type forward_type (line 42193) | enum forward_type {
type fp_type (line 42199) | enum fp_type {
type fpga_mgr_states (line 42205) | enum fpga_mgr_states {
type freeze_holder (line 42223) | enum freeze_holder {
type freezer_state_flags (line 42229) | enum freezer_state_flags {
type freq_policy (line 42237) | enum freq_policy {
type freq_qos_req_type (line 42242) | enum freq_qos_req_type {
type fs_context_phase (line 42247) | enum fs_context_phase {
type fs_context_purpose (line 42257) | enum fs_context_purpose {
type fs_value_type (line 42263) | enum fs_value_type {
type fscache_cache_state (line 42272) | enum fscache_cache_state {
type fscache_cookie_state (line 42280) | enum fscache_cookie_state {
type fscache_want_state (line 42293) | enum fscache_want_state {
type fsconfig_command (line 42299) | enum fsconfig_command {
type fsl_edma_pm_state (line 42311) | enum fsl_edma_pm_state {
type fsl_mc_pool_type (line 42316) | enum fsl_mc_pool_type {
type fsnotify_data_type (line 42324) | enum fsnotify_data_type {
type fsnotify_group_prio (line 42333) | enum fsnotify_group_prio {
type fsnotify_iter_type (line 42340) | enum fsnotify_iter_type {
type fsnotify_obj_type (line 42349) | enum fsnotify_obj_type {
type ftr_type (line 42358) | enum ftr_type {
type ftrace_dump_mode (line 42365) | enum ftrace_dump_mode {
type futex_access (line 42372) | enum futex_access {
type fw_opt (line 42377) | enum fw_opt {
type fw_resource_type (line 42388) | enum fw_resource_type {
type fw_status (line 42398) | enum fw_status {
type fwh_lock_state (line 42405) | enum fwh_lock_state {
type gdsc_status (line 42412) | enum gdsc_status {
type geni_icc_path_index (line 42417) | enum geni_icc_path_index {
type geni_se_protocol_type (line 42423) | enum geni_se_protocol_type {
type geni_se_xfer_mode (line 42432) | enum geni_se_xfer_mode {
type genl_validate_flags (line 42439) | enum genl_validate_flags {
type genpd_notication (line 42445) | enum genpd_notication {
type geometry_desc_param (line 42452) | enum geometry_desc_param {
type gic_intid_range (line 42496) | enum gic_intid_range {
type gic_type (line 42506) | enum gic_type {
type gio_reg_index (line 42511) | enum gio_reg_index {
type gpd_status (line 42523) | enum gpd_status {
type gpio_lookup_flags (line 42528) | enum gpio_lookup_flags {
type gpio_v2_line_attr_id (line 42541) | enum gpio_v2_line_attr_id {
type gpio_v2_line_changed_type (line 42547) | enum gpio_v2_line_changed_type {
type gpio_v2_line_event_id (line 42553) | enum gpio_v2_line_event_id {
type gpio_v2_line_flag (line 42558) | enum gpio_v2_line_flag {
type gpiod_flags (line 42574) | enum gpiod_flags {
type gro_result (line 42583) | enum gro_result {
type gro_result_t (line 42591) | typedef enum gro_result gro_result_t;
type group_type (line 42593) | enum group_type {
type hal_dsaf_mode (line 42603) | enum hal_dsaf_mode {
type hal_dsaf_tc_mode (line 42608) | enum hal_dsaf_tc_mode {
type handle_to_path_flags (line 42613) | enum handle_to_path_flags {
type handshake_auth (line 42618) | enum handshake_auth {
type handshake_handler_class (line 42625) | enum handshake_handler_class {
type handshake_msg_type (line 42631) | enum handshake_msg_type {
type hash_algo (line 42637) | enum hash_algo {
type hclge_comm_cmd_return_status (line 42664) | enum hclge_comm_cmd_return_status {
type hclge_comm_cmd_state (line 42679) | enum hclge_comm_cmd_state {
type hclge_comm_cmd_status (line 42683) | enum hclge_comm_cmd_status {
type hclge_err_type_list (line 42690) | enum hclge_err_type_list {
type hclge_evt_cause (line 42711) | enum hclge_evt_cause {
type hclge_fc_mode (line 42719) | enum hclge_fc_mode {
type hclge_hilink_version (line 42728) | enum hclge_hilink_version {
type hclge_led_status (line 42733) | enum hclge_led_status {
type hclge_link_fail_code (line 42739) | enum hclge_link_fail_code {
type hclge_mac_vlan_add_resp_code (line 42746) | enum hclge_mac_vlan_add_resp_code {
type hclge_mac_vlan_cfg_sel (line 42751) | enum hclge_mac_vlan_cfg_sel {
type hclge_mac_vlan_tbl_opcode (line 42756) | enum hclge_mac_vlan_tbl_opcode {
type hclge_mbx_mac_vlan_subcode (line 42763) | enum hclge_mbx_mac_vlan_subcode {
type hclge_mbx_tbl_cfg_subcode (line 42772) | enum hclge_mbx_tbl_cfg_subcode {
type hclge_mbx_vlan_cfg_subcode (line 42776) | enum hclge_mbx_vlan_cfg_subcode {
type hclge_mdio_c22_op_seq (line 42785) | enum hclge_mdio_c22_op_seq {
type hclge_mod_name_list (line 42790) | enum hclge_mod_name_list {
type hclge_opcode_type (line 42819) | enum hclge_opcode_type {
type hclge_ptp_msg0_type (line 43014) | enum hclge_ptp_msg0_type {
type hclge_ptp_msg_type (line 43021) | enum hclge_ptp_msg_type {
type hclge_ptp_udp_type (line 43027) | enum hclge_ptp_udp_type {
type hclge_reg_tag (line 43034) | enum hclge_reg_tag {
type hclge_shap_bucket (line 43056) | enum hclge_shap_bucket {
type hclge_shaper_level (line 43061) | enum hclge_shaper_level {
type hclge_vlan_fltr_cap (line 43071) | enum hclge_vlan_fltr_cap {
type hctx_type (line 43076) | enum hctx_type {
type hdmi_3d_structure (line 43083) | enum hdmi_3d_structure {
type hdmi_active_aspect (line 43095) | enum hdmi_active_aspect {
type hdmi_audio_coding_type (line 43108) | enum hdmi_audio_coding_type {
type hdmi_audio_coding_type_ext (line 43127) | enum hdmi_audio_coding_type_ext {
type hdmi_audio_sample_frequency (line 43140) | enum hdmi_audio_sample_frequency {
type hdmi_audio_sample_size (line 43151) | enum hdmi_audio_sample_size {
type hdmi_colorimetry (line 43158) | enum hdmi_colorimetry {
type hdmi_colorspace (line 43165) | enum hdmi_colorspace {
type hdmi_content_type (line 43176) | enum hdmi_content_type {
type hdmi_eotf (line 43183) | enum hdmi_eotf {
type hdmi_extended_colorimetry (line 43190) | enum hdmi_extended_colorimetry {
type hdmi_infoframe_type (line 43201) | enum hdmi_infoframe_type {
type hdmi_metadata_type (line 43209) | enum hdmi_metadata_type {
type hdmi_nups (line 43213) | enum hdmi_nups {
type hdmi_picture_aspect (line 43220) | enum hdmi_picture_aspect {
type hdmi_quantization_range (line 43229) | enum hdmi_quantization_range {
type hdmi_scan_mode (line 43236) | enum hdmi_scan_mode {
type hdmi_spd_sdi (line 43243) | enum hdmi_spd_sdi {
type hdmi_ycc_quantization_range (line 43260) | enum hdmi_ycc_quantization_range {
type health_desc_param (line 43265) | enum health_desc_param {
type hest_status (line 43273) | enum hest_status {
type hi6220_reset_ctrl_type (line 43279) | enum hi6220_reset_ctrl_type {
type hi6421_type (line 43285) | enum hi6421_type {
type hi6421v530_regulator_id (line 43290) | enum hi6421v530_regulator_id {
type hi655x_regulator_id (line 43298) | enum hi655x_regulator_id {
type hid_class_request (line 43324) | enum hid_class_request {
type hid_report_type (line 43333) | enum hid_report_type {
type hid_type (line 43340) | enum hid_type {
type hidma_cap (line 43346) | enum hidma_cap {
type hisi_sas_debugfs_bist_ffe_cfg (line 43351) | enum hisi_sas_debugfs_bist_ffe_cfg {
type hisi_sas_debugfs_bist_fixed_code (line 43363) | enum hisi_sas_debugfs_bist_fixed_code {
type hisi_sas_debugfs_cache_type (line 43369) | enum hisi_sas_debugfs_cache_type {
type hisi_sas_debugfs_reg_array_member (line 43374) | enum hisi_sas_debugfs_reg_array_member {
type hisi_sas_dev_type (line 43381) | enum hisi_sas_dev_type {
type hisi_sas_phy_event (line 43387) | enum hisi_sas_phy_event {
type hk_flags (line 43394) | enum hk_flags {
type hk_type (line 43400) | enum hk_type {
type hn_flags_bits (line 43413) | enum hn_flags_bits {
type hnae3_client_type (line 43417) | enum hnae3_client_type {
type hnae3_dbg_cmd (line 43422) | enum hnae3_dbg_cmd {
type hnae3_fec_mode (line 43471) | enum hnae3_fec_mode {
type hnae3_hw_error_type (line 43480) | enum hnae3_hw_error_type {
type hnae3_loop (line 43487) | enum hnae3_loop {
type hnae3_media_type (line 43496) | enum hnae3_media_type {
type hnae3_module_type (line 43504) | enum hnae3_module_type {
type hnae3_pflag (line 43514) | enum hnae3_pflag {
type hnae3_port_base_vlan_state (line 43519) | enum hnae3_port_base_vlan_state {
type hnae3_reset_notify_type (line 43526) | enum hnae3_reset_notify_type {
type hnae3_reset_type (line 43533) | enum hnae3_reset_type {
type hnae3_tc_map_mode (line 43547) | enum hnae3_tc_map_mode {
type hnae_led_state (line 43552) | enum hnae_led_state {
type hnae_loop (line 43559) | enum hnae_loop {
type hnae_media_type (line 43567) | enum hnae_media_type {
type hnae_port_type (line 43574) | enum hnae_port_type {
type hns3_dbg_dentry_type (line 43579) | enum hns3_dbg_dentry_type {
type hns3_desc_type (line 43590) | enum hns3_desc_type {
type hns3_flow_level_range (line 43601) | enum hns3_flow_level_range {
type hns3_nic_state (line 43608) | enum hns3_nic_state {
type hns3_pkt_l2t_type (line 43624) | enum hns3_pkt_l2t_type {
type hns3_pkt_l3t_type (line 43631) | enum hns3_pkt_l3t_type {
type hns3_pkt_l3type (line 43638) | enum hns3_pkt_l3type {
type hns3_pkt_l4t_type (line 43653) | enum hns3_pkt_l4t_type {
type hns3_pkt_l4type (line 43660) | enum hns3_pkt_l4type {
type hns3_pkt_ol3t_type (line 43670) | enum hns3_pkt_ol3t_type {
type hns3_pkt_ol4type (line 43677) | enum hns3_pkt_ol4type {
type hns3_pkt_tun_type (line 43684) | enum hns3_pkt_tun_type {
type hns_desc_type (line 43691) | enum hns_desc_type {
type hns_gmac_duplex_mdoe (line 43696) | enum hns_gmac_duplex_mdoe {
type hns_nic_state (line 43701) | enum hns_nic_state {
type hns_port_mode (line 43714) | enum hns_port_mode {
type host_event_code (line 43727) | enum host_event_code {
type host_sleep_event (line 43762) | enum host_sleep_event {
type hp_flags_bits (line 43770) | enum hp_flags_bits {
type hprobe_state (line 43774) | enum hprobe_state {
type hpx_type3_cfg_loc (line 43781) | enum hpx_type3_cfg_loc {
type hpx_type3_dev_type (line 43790) | enum hpx_type3_dev_type {
type hpx_type3_fn_type (line 43802) | enum hpx_type3_fn_type {
type hr_flags_bits (line 43808) | enum hr_flags_bits {
type hrtimer_base_type (line 43813) | enum hrtimer_base_type {
type hrtimer_mode (line 43825) | enum hrtimer_mode {
type hrtimer_restart (line 43843) | enum hrtimer_restart {
type hsm_task_states (line 43848) | enum hsm_task_states {
type hte_edge (line 43856) | enum hte_edge {
type hte_return (line 43862) | enum hte_return {
type hub_activation_type (line 43867) | enum hub_activation_type {
type hub_led_mode (line 43876) | enum hub_led_mode {
type hub_quiescing_type (line 43887) | enum hub_quiescing_type {
type hugetlb_memory_event (line 43893) | enum hugetlb_memory_event {
type hugetlb_page_flags (line 43898) | enum hugetlb_page_flags {
type hugetlb_param (line 43908) | enum hugetlb_param {
type hugetlbfs_size_type (line 43918) | enum hugetlbfs_size_type {
type hw_breakpoint_ops (line 43924) | enum hw_breakpoint_ops {
type hw_event_mc_err_type (line 43930) | enum hw_event_mc_err_type {
type hwmon_chip_attributes (line 43938) | enum hwmon_chip_attributes {
type hwmon_curr_attributes (line 43955) | enum hwmon_curr_attributes {
type hwmon_energy_attributes (line 43977) | enum hwmon_energy_attributes {
type hwmon_fan_attributes (line 43983) | enum hwmon_fan_attributes {
type hwmon_humidity_attributes (line 43999) | enum hwmon_humidity_attributes {
type hwmon_in_attributes (line 44015) | enum hwmon_in_attributes {
type hwmon_intrusion_attributes (line 44038) | enum hwmon_intrusion_attributes {
type hwmon_power_attributes (line 44043) | enum hwmon_power_attributes {
type hwmon_pwm_attributes (line 44077) | enum hwmon_pwm_attributes {
type hwmon_sensor_types (line 44085) | enum hwmon_sensor_types {
type hwmon_temp_attributes (line 44099) | enum hwmon_temp_attributes {
type hwparam_type (line 44130) | enum hwparam_type {
type hwtstamp_flags (line 44140) | enum hwtstamp_flags {
type hwtstamp_provider_qualifier (line 44146) | enum hwtstamp_provider_qualifier {
type hwtstamp_rx_filters (line 44152) | enum hwtstamp_rx_filters {
type hwtstamp_source (line 44172) | enum hwtstamp_source {
type hwtstamp_tx_types (line 44178) | enum hwtstamp_tx_types {
type i2c_alert_protocol (line 44186) | enum i2c_alert_protocol {
type i2c_chip_type (line 44191) | enum i2c_chip_type {
type i2c_driver_flags (line 44197) | enum i2c_driver_flags {
type i2c_mt65xx_clks (line 44201) | enum i2c_mt65xx_clks {
type i2c_slave_event (line 44209) | enum i2c_slave_event {
type i2c_slave_read_status (line 44217) | enum i2c_slave_read_status {
type i2c_type_exynos (line 44224) | enum i2c_type_exynos {
type ib_atomic_cap (line 44231) | enum ib_atomic_cap {
type ib_cq_notify_flags (line 44237) | enum ib_cq_notify_flags {
type ib_event_type (line 44244) | enum ib_event_type {
type ib_flow_action_type (line 44267) | enum ib_flow_action_type {
type ib_flow_attr_type (line 44272) | enum ib_flow_attr_type {
type ib_flow_spec_type (line 44279) | enum ib_flow_spec_type {
type ib_gid_type (line 44297) | enum ib_gid_type {
type ib_mig_state (line 44304) | enum ib_mig_state {
type ib_mr_type (line 44310) | enum ib_mr_type {
type ib_mtu (line 44319) | enum ib_mtu {
type ib_mw_type (line 44327) | enum ib_mw_type {
type ib_poll_context (line 44332) | enum ib_poll_context {
type ib_port_state (line 44340) | enum ib_port_state {
type ib_qp_state (line 44349) | enum ib_qp_state {
type ib_qp_type (line 44359) | enum ib_qp_type {
type ib_sig_err_type (line 44384) | enum ib_sig_err_type {
type ib_sig_type (line 44390) | enum ib_sig_type {
type ib_signature_type (line 44395) | enum ib_signature_type {
type ib_srq_attr_mask (line 44400) | enum ib_srq_attr_mask {
type ib_srq_type (line 44405) | enum ib_srq_type {
type ib_t10_dif_bg_type (line 44411) | enum ib_t10_dif_bg_type {
type ib_uverbs_access_flags (line 44416) | enum ib_uverbs_access_flags {
type ib_uverbs_advise_mr_advice (line 44431) | enum ib_uverbs_advise_mr_advice {
type ib_uverbs_create_qp_mask (line 44437) | enum ib_uverbs_create_qp_mask {
type ib_uverbs_device_cap_flags (line 44441) | enum ib_uverbs_device_cap_flags {
type ib_uverbs_gid_type (line 44472) | enum ib_uverbs_gid_type {
type ib_uverbs_qp_create_flags (line 44478) | enum ib_uverbs_qp_create_flags {
type ib_uverbs_qp_type (line 44486) | enum ib_uverbs_qp_type {
type ib_uverbs_raw_packet_caps (line 44496) | enum ib_uverbs_raw_packet_caps {
type ib_uverbs_srq_type (line 44503) | enum ib_uverbs_srq_type {
type ib_uverbs_wc_opcode (line 44509) | enum ib_uverbs_wc_opcode {
type ib_uverbs_wq_flags (line 44522) | enum ib_uverbs_wq_flags {
type ib_uverbs_wq_type (line 44529) | enum ib_uverbs_wq_type {
type ib_uverbs_wr_opcode (line 44533) | enum ib_uverbs_wr_opcode {
type ib_uverbs_write_cmds (line 44552) | enum ib_uverbs_write_cmds {
type ib_wc_opcode (line 44596) | enum ib_wc_opcode {
type ib_wc_status (line 44614) | enum ib_wc_status {
type ib_wq_state (line 44639) | enum ib_wq_state {
type ib_wq_type (line 44645) | enum ib_wq_type {
type ib_wr_opcode (line 44649) | enum ib_wr_opcode {
type ifc_nand_fir_opcodes (line 44680) | enum ifc_nand_fir_opcodes {
type igb_boards (line 44717) | enum igb_boards {
type igb_diagnostics_results (line 44721) | enum igb_diagnostics_results {
type igb_filter_match_flags (line 44729) | enum igb_filter_match_flags {
type igb_tx_buf_type (line 44736) | enum igb_tx_buf_type {
type igb_tx_flags (line 44742) | enum igb_tx_flags {
type igbvf_boards (line 44750) | enum igbvf_boards {
type igbvf_state_t (line 44755) | enum igbvf_state_t {
type iio_available_type (line 44761) | enum iio_available_type {
type iio_buffer_direction (line 44766) | enum iio_buffer_direction {
type iio_chan_info_enum (line 44771) | enum iio_chan_info_enum {
type iio_chan_type (line 44804) | enum iio_chan_type {
type iio_endian (line 44847) | enum iio_endian {
type iio_event_direction (line 44853) | enum iio_event_direction {
type iio_event_info (line 44862) | enum iio_event_info {
type iio_event_type (line 44876) | enum iio_event_type {
type iio_modifier (line 44887) | enum iio_modifier {
type iio_shared_by (line 44943) | enum iio_shared_by {
type imx7_src_registers (line 44950) | enum imx7_src_registers {
type imx8_pcie_phy_type (line 44962) | enum imx8_pcie_phy_type {
type imx8mm_pads (line 44967) | enum imx8mm_pads {
type imx8mn_pads (line 45119) | enum imx8mn_pads {
type imx8mp_pads (line 45271) | enum imx8mp_pads {
type imx8mp_src_registers (line 45422) | enum imx8mp_src_registers {
type imx8mq_pads (line 45434) | enum imx8mq_pads {
type imx8mq_src_registers (line 45586) | enum imx8mq_src_registers {
type imx8ulp_pads (line 45598) | enum imx8ulp_pads {
type imx93_pads (line 45697) | enum imx93_pads {
type imx_i2c_state (line 45808) | enum imx_i2c_state {
type imx_i2c_type (line 45819) | enum imx_i2c_type {
type imx_misc_func (line 45826) | enum imx_misc_func {
type imx_mu_chan_type (line 45849) | enum imx_mu_chan_type {
type imx_mu_type (line 45858) | enum imx_mu_type {
type imx_mu_xcr (line 45865) | enum imx_mu_xcr {
type imx_mu_xsr (line 45874) | enum imx_mu_xsr {
type imx_pcie_variants (line 45882) | enum imx_pcie_variants {
type imx_pfdv2_type (line 45899) | enum imx_pfdv2_type {
type imx_pll14xx_type (line 45904) | enum imx_pll14xx_type {
type imx_pllv1_type (line 45909) | enum imx_pllv1_type {
type imx_pllv3_type (line 45918) | enum imx_pllv3_type {
type imx_pllv4_type (line 45931) | enum imx_pllv4_type {
type imx_rproc_method (line 45937) | enum imx_rproc_method {
type imx_sc_error_codes (line 45944) | enum imx_sc_error_codes {
type imx_sc_pm_func (line 45960) | enum imx_sc_pm_func {
type imx_sc_rm_func (line 45983) | enum imx_sc_rm_func {
type imx_sc_rpc_svc (line 46020) | enum imx_sc_rpc_svc {
type imx_tx_state (line 46031) | enum imx_tx_state {
type imx_uart_type (line 46038) | enum imx_uart_type {
type inet_csk_ack_state_t (line 46043) | enum inet_csk_ack_state_t {
type inode_i_mutex_lock_class (line 46052) | enum inode_i_mutex_lock_class {
type input_clock_type (line 46061) | enum input_clock_type {
type interconnect_desc_param (line 46068) | enum interconnect_desc_param {
type io_pgtable_caps (line 46075) | enum io_pgtable_caps {
type io_pgtable_fmt (line 46079) | enum io_pgtable_fmt {
type io_uring_cmd_flags (line 46093) | enum io_uring_cmd_flags {
type io_uring_msg_ring_flags (line 46107) | enum io_uring_msg_ring_flags {
type io_uring_napi_op (line 46112) | enum io_uring_napi_op {
type io_uring_napi_tracking_strategy (line 46118) | enum io_uring_napi_tracking_strategy {
type io_uring_op (line 46124) | enum io_uring_op {
type io_uring_register_op (line 46186) | enum io_uring_register_op {
type io_uring_register_pbuf_ring_flags (line 46225) | enum io_uring_register_pbuf_ring_flags {
type io_uring_register_restriction_op (line 46230) | enum io_uring_register_restriction_op {
type io_uring_socket_op (line 46238) | enum io_uring_socket_op {
type io_uring_sqe_flags_bit (line 46245) | enum io_uring_sqe_flags_bit {
type io_wq_cancel (line 46255) | enum io_wq_cancel {
type io_wq_type (line 46261) | enum io_wq_type {
type ioctrl_regs (line 46266) | enum ioctrl_regs {
type ioctrl_regs___2 (line 46277) | enum ioctrl_regs___2 {
type ioctrl_regs___3 (line 46290) | enum ioctrl_regs___3 {
type ioctrl_regs___4 (line 46300) | enum ioctrl_regs___4 {
type ioctrl_regs___5 (line 46305) | enum ioctrl_regs___5 {
type ioctrl_regs___6 (line 46313) | enum ioctrl_regs___6 {
type ioctrl_regs___7 (line 46319) | enum ioctrl_regs___7 {
type ioctrl_regs___8 (line 46326) | enum ioctrl_regs___8 {
type iodev_type (line 46333) | enum iodev_type {
type iommu_atf_cmd (line 46340) | enum iommu_atf_cmd {
type iommu_cap (line 46346) | enum iommu_cap {
type iommu_dev_features (line 46355) | enum iommu_dev_features {
type iommu_dma_cookie_type (line 46360) | enum iommu_dma_cookie_type {
type iommu_dma_queue_type (line 46365) | enum iommu_dma_queue_type {
type iommu_fault_type (line 46370) | enum iommu_fault_type {
type iommu_page_response_code (line 46374) | enum iommu_page_response_code {
type iommu_resv_type (line 46380) | enum iommu_resv_type {
type iommufd_hwpt_alloc_flags (line 46388) | enum iommufd_hwpt_alloc_flags {
type iommufd_object_type (line 46395) | enum iommufd_object_type {
type ip_conntrack_dir (line 46409) | enum ip_conntrack_dir {
type ip_conntrack_info (line 46415) | enum ip_conntrack_info {
type ip_conntrack_status (line 46426) | enum ip_conntrack_status {
type ip_defrag_users (line 46467) | enum ip_defrag_users {
type ipi_msg_type (line 46483) | enum ipi_msg_type {
type ipi_vector (line 46496) | enum ipi_vector {
type ipmi_addr_space (line 46501) | enum ipmi_addr_space {
type ipmi_addr_src (line 46506) | enum ipmi_addr_src {
type ipmi_plat_interface_type (line 46519) | enum ipmi_plat_interface_type {
type ipq5018_functions (line 46524) | enum ipq5018_functions {
type ipq5332_functions (line 46612) | enum ipq5332_functions {
type ipq6018_functions (line 46711) | enum ipq6018_functions {
type ipq806x_versions (line 46837) | enum ipq806x_versions {
type ipq8074_functions (line 46843) | enum ipq8074_functions {
type ipq8074_versions (line 46959) | enum ipq8074_versions {
type ipq9574_functions (line 46964) | enum ipq9574_functions {
type iproc_arm_pll_fid (line 47048) | enum iproc_arm_pll_fid {
type iproc_msi_reg (line 47055) | enum iproc_msi_reg {
type iproc_pcie_ib_map_type (line 47067) | enum iproc_pcie_ib_map_type {
type iproc_pcie_reg (line 47073) | enum iproc_pcie_reg {
type iproc_pcie_type (line 47110) | enum iproc_pcie_type {
type iproc_pinconf_ctrl_type (line 47118) | enum iproc_pinconf_ctrl_type {
type iproc_pinconf_param (line 47124) | enum iproc_pinconf_param {
type irq_domain_bus_token (line 47132) | enum irq_domain_bus_token {
type irq_gc_flags (line 47152) | enum irq_gc_flags {
type irq_source (line 47160) | enum irq_source {
type irqchip_irq_state (line 47165) | enum irqchip_irq_state {
type irqreturn (line 47172) | enum irqreturn {
type irqreturn_t (line 47178) | typedef enum irqreturn irqreturn_t;
type isp1760_ctrl_state (line 47180) | enum isp1760_ctrl_state {
type isp1760_queue_head_types (line 47187) | enum isp1760_queue_head_types {
type isp176x_device_controller_fields (line 47194) | enum isp176x_device_controller_fields {
type isp176x_host_controller_fields (line 47238) | enum isp176x_host_controller_fields {
type iter_type (line 47320) | enum iter_type {
type its_vcpu_info_cmd_type (line 47330) | enum its_vcpu_info_cmd_type {
type jbd2_shrink_type (line 47342) | enum jbd2_shrink_type {
type jbd_state_bits (line 47348) | enum jbd_state_bits {
type jump_label_type (line 47361) | enum jump_label_type {
type k3_dma_type (line 47366) | enum k3_dma_type {
type k3_ring_mode (line 47372) | enum k3_ring_mode {
type k3_ring_size (line 47379) | enum k3_ring_size {
type k3_ringacc_access_mode (line 47390) | enum k3_ringacc_access_mode {
type k3_ringacc_proxy_access_mode (line 47399) | enum k3_ringacc_proxy_access_mode {
type kcmp_type (line 47406) | enum kcmp_type {
type kernel_load_data_id (line 47418) | enum kernel_load_data_id {
type kernel_pkey_operation (line 47429) | enum kernel_pkey_operation {
type kernel_read_file_id (line 47436) | enum kernel_read_file_id {
type kernfs_node_flag (line 47447) | enum kernfs_node_flag {
type kernfs_node_type (line 47461) | enum kernfs_node_type {
type kernfs_root_flag (line 47467) | enum kernfs_root_flag {
type key_being_used_for (line 47474) | enum key_being_used_for {
type key_lookup_flag (line 47484) | enum key_lookup_flag {
type key_need_perm (line 47490) | enum key_need_perm {
type key_notification_subtype (line 47504) | enum key_notification_subtype {
type key_state (line 47515) | enum key_state {
type kfunc_ptr_arg_type (line 47520) | enum kfunc_ptr_arg_type {
type kmalloc_cache_type (line 47541) | enum kmalloc_cache_type {
type kmsg_dump_reason (line 47551) | enum kmsg_dump_reason {
type kobj_ns_type (line 47560) | enum kobj_ns_type {
type kobject_action (line 47566) | enum kobject_action {
type kp_band (line 47577) | enum kp_band {
type ksm_advisor_type (line 47583) | enum ksm_advisor_type {
type ksm_get_folio_flags (line 47588) | enum ksm_get_folio_flags {
type kunwind_source (line 47594) | enum kunwind_source {
type kvm_arch_timer_regs (line 47602) | enum kvm_arch_timer_regs {
type kvm_arch_timers (line 47610) | enum kvm_arch_timers {
type kvm_bus (line 47619) | enum kvm_bus {
type kvm_device_type (line 47628) | enum kvm_device_type {
type kvm_gfn_range_filter (line 47646) | enum kvm_gfn_range_filter {
type kvm_mode (line 47651) | enum kvm_mode {
type kvm_mr_change (line 47658) | enum kvm_mr_change {
type kvm_pgtable_prot (line 47665) | enum kvm_pgtable_prot {
type kvm_pgtable_stage2_flags (line 47677) | enum kvm_pgtable_stage2_flags {
type kvm_pgtable_walk_flags (line 47682) | enum kvm_pgtable_walk_flags {
type kvm_smccc_filter_action (line 47692) | enum kvm_smccc_filter_action {
type kvm_stat_kind (line 47699) | enum kvm_stat_kind {
type kvm_wfx_trap_policy (line 47704) | enum kvm_wfx_trap_policy {
type l2tp_debug_flags (line 47710) | enum l2tp_debug_flags {
type latency_range (line 47717) | enum latency_range {
type layoutdriver_policy_flags (line 47724) | enum layoutdriver_policy_flags {
type led_brightness (line 47731) | enum led_brightness {
type led_default_state (line 47738) | enum led_default_state {
type led_mode (line 47744) | enum led_mode {
type led_trigger_netdev_modes (line 47751) | enum led_trigger_netdev_modes {
type legacy_fs_param (line 47768) | enum legacy_fs_param {
type legacy_scpi_std_cmd (line 47774) | enum legacy_scpi_std_cmd {
type lg_g15_led_type (line 47810) | enum lg_g15_led_type {
type lg_g15_model (line 47821) | enum lg_g15_model {
type lightbar_command (line 47829) | enum lightbar_command {
type limit_by4 (line 47867) | enum limit_by4 {
type link_inband_signalling (line 47872) | enum link_inband_signalling {
type locality_types (line 47878) | enum locality_types {
type lock_type4 (line 47885) | enum lock_type4 {
type lockdep_ok (line 47893) | enum lockdep_ok {
type lockdown_reason (line 47898) | enum lockdown_reason {
type lpi2c_imx_mode (line 47931) | enum lpi2c_imx_mode {
type lpi2c_imx_pincfg (line 47939) | enum lpi2c_imx_pincfg {
type lpuart_type (line 47946) | enum lpuart_type {
type lru_list (line 47956) | enum lru_list {
type lru_status (line 47965) | enum lru_status {
type lruvec_flags (line 47974) | enum lruvec_flags {
type lsm_event (line 47979) | enum lsm_event {
type lsm_integrity_type (line 47983) | enum lsm_integrity_type {
type lsm_order (line 47989) | enum lsm_order {
type lw_bits (line 47995) | enum lw_bits {
type lwtunnel_encap_types (line 47999) | enum lwtunnel_encap_types {
type lwtunnel_ip6_t (line 48014) | enum lwtunnel_ip6_t {
type lwtunnel_ip_t (line 48027) | enum lwtunnel_ip_t {
type lzma2_seq (line 48040) | enum lzma2_seq {
type lzma_state (line 48052) | enum lzma_state {
type mac_commom_mode (line 48067) | enum mac_commom_mode {
type mac_intf (line 48074) | enum mac_intf {
type mac_mode (line 48088) | enum mac_mode {
type mac_speed (line 48109) | enum mac_speed {
type macb_bd_control (line 48116) | enum macb_bd_control {
type maple_status (line 48123) | enum maple_status {
type maple_type (line 48134) | enum maple_type {
type mapping_flags (line 48141) | enum mapping_flags {
type max77620_alternate_pinmux_option (line 48156) | enum max77620_alternate_pinmux_option {
type max77620_chip_id (line 48166) | enum max77620_chip_id {
type max77620_fps_src (line 48172) | enum max77620_fps_src {
type max77620_pin_ppdrv (line 48180) | enum max77620_pin_ppdrv {
type max77620_regulator_type (line 48186) | enum max77620_regulator_type {
type max77620_regulators (line 48192) | enum max77620_regulators {
type max77686_irq (line 48210) | enum max77686_irq {
type max77686_irq_source (line 48229) | enum max77686_irq_source {
type max77686_pmic_reg (line 48236) | enum max77686_pmic_reg {
type max77686_rtc_reg (line 48345) | enum max77686_rtc_reg {
type max77686_rtc_reg_offset (line 48375) | enum max77686_rtc_reg_offset {
type max77802_rtc_reg (line 48405) | enum max77802_rtc_reg {
type mc_cmd_status (line 48439) | enum mc_cmd_status {
type mctrl_gpio_idx (line 48454) | enum mctrl_gpio_idx {
type mdio_c22_op_seq (line 48465) | enum mdio_c22_op_seq {
type mdio_c45_op_seq (line 48470) | enum mdio_c45_op_seq {
type mdio_st_clause (line 48477) | enum mdio_st_clause {
type mem_type (line 48482) | enum mem_type {
type membarrier_cmd (line 48515) | enum membarrier_cmd {
type membarrier_cmd_flag (line 48530) | enum membarrier_cmd_flag {
type memblock_flags (line 48534) | enum memblock_flags {
type memcg_memory_event (line 48543) | enum memcg_memory_event {
type memcg_stat_item (line 48556) | enum memcg_stat_item {
type meminit_context (line 48567) | enum meminit_context {
type memory_type (line 48572) | enum memory_type {
type meson_pinconf_drv (line 48580) | enum meson_pinconf_drv {
type meson_reg_type (line 48587) | enum meson_reg_type {
type meson_sar_adc_avg_mode (line 48597) | enum meson_sar_adc_avg_mode {
type meson_sar_adc_chan7_mux_sel (line 48603) | enum meson_sar_adc_chan7_mux_sel {
type meson_sar_adc_channel_index (line 48612) | enum meson_sar_adc_channel_index {
type meson_sar_adc_num_samples (line 48629) | enum meson_sar_adc_num_samples {
type meson_sar_adc_vref_sel (line 48636) | enum meson_sar_adc_vref_sel {
type meson_soc_id (line 48641) | enum meson_soc_id {
type metadata_type (line 48646) | enum metadata_type {
type mf_action_page_type (line 48653) | enum mf_action_page_type {
type mf_flags (line 48677) | enum mf_flags {
type mf_result (line 48688) | enum mf_result {
type mfi_evt_class (line 48695) | enum mfi_evt_class {
type migrate_mode (line 48705) | enum migrate_mode {
type migrate_reason (line 48711) | enum migrate_reason {
type migratetype (line 48725) | enum migratetype {
type migration_type (line 48736) | enum migration_type {
type mipi_dsi_compression_algo (line 48743) | enum mipi_dsi_compression_algo {
type mipi_dsi_dcs_tear_mode (line 48748) | enum mipi_dsi_dcs_tear_mode {
type mipi_dsi_pixel_format (line 48753) | enum mipi_dsi_pixel_format {
type mitigation_state (line 48760) | enum mitigation_state {
type mm_cid_state (line 48766) | enum mm_cid_state {
type mmc_busy_cmd (line 48771) | enum mmc_busy_cmd {
type mmc_drv_op (line 48779) | enum mmc_drv_op {
type mmc_err_stat (line 48787) | enum mmc_err_stat {
type mmc_issue_type (line 48806) | enum mmc_issue_type {
type mmc_issued (line 48813) | enum mmc_issued {
type mmci_busy_state (line 48820) | enum mmci_busy_state {
type mminit_level (line 48826) | enum mminit_level {
type mmu_notifier_event (line 48832) | enum mmu_notifier_event {
type mnt_tree_flags_t (line 48843) | enum mnt_tree_flags_t {
type mod_license (line 48848) | enum mod_license {
type mod_mem_type (line 48853) | enum mod_mem_type {
type module_state (line 48865) | enum module_state {
type motionsense_command (line 48872) | enum motionsense_command {
type motionsensor_type (line 48895) | enum motionsensor_type {
type mountstat (line 48907) | enum mountstat {
type mountstat3 (line 48915) | enum mountstat3 {
type mq_rq_state (line 48928) | enum mq_rq_state {
type mrq_bwmgr_int_cmd (line 48934) | enum mrq_bwmgr_int_cmd {
type mrq_debug_commands (line 48940) | enum mrq_debug_commands {
type mrq_debugfs_commands (line 48949) | enum mrq_debugfs_commands {
type mrq_pg_cmd (line 48956) | enum mrq_pg_cmd {
type mrq_reset_commands (line 48964) | enum mrq_reset_commands {
type msdos_sys_ind (line 48972) | enum msdos_sys_ind {
type msg_end_type (line 48993) | enum msg_end_type {
type msi_desc_filter (line 48999) | enum msi_desc_filter {
type msi_domain_ids (line 49005) | enum msi_domain_ids {
type msm8916_functions (line 49010) | enum msm8916_functions {
type msm8953_functions (line 49142) | enum msm8953_functions {
type msm8976_functions (line 49347) | enum msm8976_functions {
type msm8994_functions (line 49446) | enum msm8994_functions {
type msm8996_functions (line 49579) | enum msm8996_functions {
type msm8998_functions (line 49826) | enum msm8998_functions {
type mt6328_irq_status_numbers (line 50006) | enum mt6328_irq_status_numbers {
type mt6331_irq_status_numbers (line 50049) | enum mt6331_irq_status_numbers {
type mt6357_irq_numbers (line 50075) | enum mt6357_irq_numbers {
type mt6357_irq_top_status_shift (line 50140) | enum mt6357_irq_top_status_shift {
type mt6358_irq_numbers (line 50152) | enum mt6358_irq_numbers {
type mt6358_irq_top_status_shift (line 50237) | enum mt6358_irq_top_status_shift {
type mt6359_irq_numbers (line 50248) | enum mt6359_irq_numbers {
type mt6359_irq_top_status_shift (line 50327) | enum mt6359_irq_top_status_shift {
type mt6397_irq_numbers (line 50338) | enum mt6397_irq_numbers {
type mtd_file_modes (line 50374) | enum mtd_file_modes {
type mthp_stat_item (line 50381) | enum mthp_stat_item {
type mtk_cirq_regoffs_index (line 50402) | enum mtk_cirq_regoffs_index {
type mtk_iommu_plat (line 50414) | enum mtk_iommu_plat {
type mtk_phy_version (line 50428) | enum mtk_phy_version {
type mtk_reset_version (line 50434) | enum mtk_reset_version {
type mtk_smi_type (line 50440) | enum mtk_smi_type {
type mtk_trans_op (line 50446) | enum mtk_trans_op {
type mtu3_dr_force_mode (line 50452) | enum mtu3_dr_force_mode {
type mtu3_g_ep0_state (line 50458) | enum mtu3_g_ep0_state {
type mtu3_speed (line 50466) | enum mtu3_speed {
type multi_stop_state (line 50474) | enum multi_stop_state {
type musb_buf_mode (line 50482) | enum musb_buf_mode {
type musb_fifo_style (line 50487) | enum musb_fifo_style {
type musb_g_ep0_state (line 50493) | enum musb_g_ep0_state {
type musb_h_ep0_state (line 50503) | enum musb_h_ep0_state {
type musb_mode (line 50511) | enum musb_mode {
type musb_vbus_id_status (line 50518) | enum musb_vbus_id_status {
type muxtype (line 50526) | enum muxtype {
type mv_xor_mode (line 50531) | enum mv_xor_mode {
type mv_xor_type (line 50536) | enum mv_xor_type {
type mvneta_bm_type (line 50542) | enum mvneta_bm_type {
type mvneta_tx_buf_type (line 50548) | enum mvneta_tx_buf_type {
type mvpp22_cls_c2_action (line 50555) | enum mvpp22_cls_c2_action {
type mvpp22_cls_c2_color_action (line 50562) | enum mvpp22_cls_c2_color_action {
type mvpp22_cls_c2_fwd_action (line 50573) | enum mvpp22_cls_c2_fwd_action {
type mvpp22_ptp_action (line 50584) | enum mvpp22_ptp_action {
type mvpp22_ptp_packet_format (line 50597) | enum mvpp22_ptp_packet_format {
type mvpp2_bm_pool_log_num (line 50607) | enum mvpp2_bm_pool_log_num {
type mvpp2_cls_engine (line 50614) | enum mvpp2_cls_engine {
type mvpp2_cls_field_id (line 50623) | enum mvpp2_cls_field_id {
type mvpp2_cls_lu_type (line 50636) | enum mvpp2_cls_lu_type {
type mvpp2_prs_flow (line 50640) | enum mvpp2_prs_flow {
type mvpp2_prs_l2_cast (line 50667) | enum mvpp2_prs_l2_cast {
type mvpp2_prs_l3_cast (line 50672) | enum mvpp2_prs_l3_cast {
type mvpp2_prs_lookup (line 50678) | enum mvpp2_prs_lookup {
type mvpp2_prs_udf (line 50692) | enum mvpp2_prs_udf {
type mvpp2_tag_type (line 50700) | enum mvpp2_tag_type {
type mvpp2_tx_buf_type (line 50709) | enum mvpp2_tx_buf_type {
type nand_bbt_block_status (line 50715) | enum nand_bbt_block_status {
type nand_ecc_algo (line 50724) | enum nand_ecc_algo {
type nand_ecc_engine_integration (line 50731) | enum nand_ecc_engine_integration {
type nand_ecc_engine_type (line 50737) | enum nand_ecc_engine_type {
type nand_ecc_legacy_mode (line 50745) | enum nand_ecc_legacy_mode {
type nand_ecc_placement (line 50755) | enum nand_ecc_placement {
type nand_interface_type (line 50761) | enum nand_interface_type {
type nand_op_instr_type (line 50766) | enum nand_op_instr_type {
type nand_page_io_req_type (line 50774) | enum nand_page_io_req_type {
type nbcon_prio (line 50779) | enum nbcon_prio {
type net_device_flags (line 50787) | enum net_device_flags {
type net_device_path_type (line 50809) | enum net_device_path_type {
type net_prot (line 50818) | enum net_prot {
type net_xmit_qdisc_t (line 50871) | enum net_xmit_qdisc_t {
type netdev_cmd (line 50876) | enum netdev_cmd {
type netdev_lag_hash (line 50919) | enum netdev_lag_hash {
type netdev_lag_tx_type (line 50930) | enum netdev_lag_tx_type {
type netdev_ml_priv_type (line 50939) | enum netdev_ml_priv_type {
type netdev_offload_xstats_type (line 50944) | enum netdev_offload_xstats_type {
type netdev_priv_flags (line 50948) | enum netdev_priv_flags {
type netdev_qstats_scope (line 50983) | enum netdev_qstats_scope {
type netdev_queue_state_t (line 50987) | enum netdev_queue_state_t {
type netdev_queue_type (line 50993) | enum netdev_queue_type {
type netdev_reg_state (line 50998) | enum netdev_reg_state {
type netdev_stat_type (line 51007) | enum netdev_stat_type {
type netdev_state_t (line 51014) | enum netdev_state_t {
type netdev_tx (line 51023) | enum netdev_tx {
type netdev_tx_t (line 51029) | typedef enum netdev_tx netdev_tx_t;
type netdev_xdp_act (line 51031) | enum netdev_xdp_act {
type netdev_xdp_rx_metadata (line 51042) | enum netdev_xdp_rx_metadata {
type netdev_xsk_flags (line 51048) | enum netdev_xsk_flags {
type netevent_notif_type (line 51053) | enum netevent_notif_type {
type netfs_collect_contig_trace (line 51062) | enum netfs_collect_contig_trace {
type netfs_donate_trace (line 51068) | enum netfs_donate_trace {
type netfs_failure (line 51075) | enum netfs_failure {
type netfs_folio_trace (line 51086) | enum netfs_folio_trace {
type netfs_folioq_trace (line 51128) | enum netfs_folioq_trace {
type netfs_io_origin (line 51137) | enum netfs_io_origin {
type netfs_io_source (line 51153) | enum netfs_io_source {
type netfs_read_from_hole (line 51164) | enum netfs_read_from_hole {
type netfs_read_trace (line 51170) | enum netfs_read_trace {
type netfs_rreq_ref_trace (line 51181) | enum netfs_rreq_ref_trace {
type netfs_rreq_trace (line 51198) | enum netfs_rreq_trace {
type netfs_sreq_ref_trace (line 51223) | enum netfs_sreq_ref_trace {
type netfs_sreq_trace (line 51243) | enum netfs_sreq_trace {
type netfs_write_trace (line 51279) | enum netfs_write_trace {
type netlink_attribute_type (line 51287) | enum netlink_attribute_type {
type netlink_policy_type_attr (line 51308) | enum netlink_policy_type_attr {
type netlink_skb_flags (line 51326) | enum netlink_skb_flags {
type netlink_validation (line 51330) | enum netlink_validation {
type netloc_type4 (line 51339) | enum netloc_type4 {
type netns_bpf_attach_type (line 51345) | enum netns_bpf_attach_type {
type nexthop_event_type (line 51352) | enum nexthop_event_type {
type nf_ct_ext_id (line 51360) | enum nf_ct_ext_id {
type nf_dev_hooks (line 51369) | enum nf_dev_hooks {
type nf_hook_ops_type (line 51375) | enum nf_hook_ops_type {
type nf_inet_hooks (line 51381) | enum nf_inet_hooks {
type nf_ip_hook_priorities (line 51391) | enum nf_ip_hook_priorities {
type nf_log_type (line 51409) | enum nf_log_type {
type nf_nat_manip_type (line 51415) | enum nf_nat_manip_type
type nfs3_createmode (line 51417) | enum nfs3_createmode {
type nfs3_ftype (line 51423) | enum nfs3_ftype {
type nfs3_stable_how (line 51435) | enum nfs3_stable_how {
type nfs4_acl_type (line 51442) | enum nfs4_acl_type {
type nfs4_callback_procnum (line 51449) | enum nfs4_callback_procnum {
type nfs4_change_attr_type (line 51454) | enum nfs4_change_attr_type {
type nfs4_client_state (line 51462) | enum nfs4_client_state {
type nfs4_ff_op_type (line 51485) | enum nfs4_ff_op_type {
type nfs4_open_delegation_type4 (line 51490) | enum nfs4_open_delegation_type4 {
type nfs4_session_state (line 51499) | enum nfs4_session_state {
type nfs4_setxattr_options (line 51504) | enum nfs4_setxattr_options {
type nfs4_slot_tbl_state (line 51510) | enum nfs4_slot_tbl_state {
type nfs_cb_opnum4 (line 51514) | enum nfs_cb_opnum4 {
type nfs_ftype4 (line 51531) | enum nfs_ftype4 {
type nfs_lock_status (line 51544) | enum nfs_lock_status {
type nfs_opnum4 (line 51550) | enum nfs_opnum4 {
type nfs_param (line 51627) | enum nfs_param {
type nfs_stat (line 51686) | enum nfs_stat {
type nfs_stat_bytecounters (line 51760) | enum nfs_stat_bytecounters {
type nfs_stat_eventcounters (line 51772) | enum nfs_stat_eventcounters {
type nfsstat4 (line 51803) | enum nfsstat4 {
type nh_notifier_info_type (line 51920) | enum nh_notifier_info_type {
type nla_policy_validation (line 51928) | enum nla_policy_validation {
type nlmsgerr_attrs (line 51939) | enum nlmsgerr_attrs {
type node_stat_item (line 51951) | enum node_stat_item {
type node_states (line 52007) | enum node_states {
type notify_state (line 52018) | enum notify_state {
type numa_faults_stats (line 52024) | enum numa_faults_stats {
type numa_stat_item (line 52031) | enum numa_stat_item {
type numa_topology_type (line 52041) | enum numa_topology_type {
type numa_type (line 52047) | enum numa_type {
type numa_vmaskip_reason (line 52053) | enum numa_vmaskip_reason {
type nvmem_type (line 52063) | enum nvmem_type {
type objext_flags (line 52071) | enum objext_flags {
type ocotp_devtype (line 52076) | enum ocotp_devtype {
type of_gpio_flags (line 52081) | enum of_gpio_flags {
type of_reconfig_change (line 52091) | enum of_reconfig_change {
type offload_act_command (line 52097) | enum offload_act_command {
type ohci_rh_state (line 52103) | enum ohci_rh_state {
type oom_constraint (line 52109) | enum oom_constraint {
type open_claim_type4 (line 52116) | enum open_claim_type4 {
type opentype4 (line 52126) | enum opentype4 {
type opp_table_access (line 52131) | enum opp_table_access {
type orion_ehci_phy_ver (line 52137) | enum orion_ehci_phy_ver {
type orion_mdio_bus_type (line 52144) | enum orion_mdio_bus_type {
type orion_spi_type (line 52149) | enum orion_spi_type {
type ospi_mux_select_type (line 52154) | enum ospi_mux_select_type {
type otg_fsm_timer (line 52159) | enum otg_fsm_timer {
type owl_dma_id (line 52175) | enum owl_dma_id {
type owl_dmadesc_offsets (line 52180) | enum owl_dmadesc_offsets {
type owl_pinconf_drv (line 52193) | enum owl_pinconf_drv {
type owner_state (line 52200) | enum owner_state {
type p9_cache_bits (line 52207) | enum p9_cache_bits {
type p9_cache_shortcuts (line 52216) | enum p9_cache_shortcuts {
type p9_fid_reftype (line 52224) | enum p9_fid_reftype {
type p9_msg_t (line 52231) | enum p9_msg_t {
type p9_open_mode_t (line 52302) | enum p9_open_mode_t {
type p9_perm_t (line 52318) | enum p9_perm_t {
type p9_proto_versions (line 52335) | enum p9_proto_versions {
type p9_req_status_t (line 52341) | enum p9_req_status_t {
type p9_session_flags (line 52350) | enum p9_session_flags {
type p9_trans_status (line 52363) | enum p9_trans_status {
type packet_sock_flags (line 52370) | enum packet_sock_flags {
type packing_op (line 52380) | enum packing_op {
type pad_func_e (line 52385) | enum pad_func_e {
type page_memcg_data_flags (line 52390) | enum page_memcg_data_flags {
type page_size_enum (line 52396) | enum page_size_enum {
type page_walk_action (line 52400) | enum page_walk_action {
type page_walk_lock (line 52406) | enum page_walk_lock {
type pageblock_bits (line 52412) | enum pageblock_bits {
type pageflags (line 52419) | enum pageflags {
type pagetype (line 52463) | enum pagetype {
type partition_cmd (line 52475) | enum partition_cmd {
type passtype (line 52483) | enum passtype {
type pca9450_chip_type (line 52489) | enum pca9450_chip_type {
type pca_type (line 52497) | enum pca_type {
type pce_status (line 52518) | enum pce_status {
type pchg_state (line 52526) | enum pchg_state {
type pci_bar_type (line 52539) | enum pci_bar_type {
type pci_barno (line 52546) | enum pci_barno {
type pci_board_num_t (line 52556) | enum pci_board_num_t {
type pci_bus_flags (line 52675) | enum pci_bus_flags {
type pci_bus_speed (line 52682) | enum pci_bus_speed {
type pci_dev_flags (line 52711) | enum pci_dev_flags {
type pci_dev_reg_1 (line 52726) | enum pci_dev_reg_1 {
type pci_dev_reg_2 (line 52741) | enum pci_dev_reg_2 {
type pci_dev_reg_3 (line 52752) | enum pci_dev_reg_3 {
type pci_dev_reg_4 (line 52776) | enum pci_dev_reg_4 {
type pci_dev_reg_5 (line 52793) | enum pci_dev_reg_5 {
type pci_epc_bar_type (line 52823) | enum pci_epc_bar_type {
type pci_epc_interface_type (line 52829) | enum pci_epc_interface_type {
type pci_ers_result (line 52835) | enum pci_ers_result {
type pci_fixup_pass (line 52844) | enum pci_fixup_pass {
type pci_interrupt_pin (line 52855) | enum pci_interrupt_pin {
type pci_mmap_api (line 52863) | enum pci_mmap_api {
type pci_mmap_state (line 52868) | enum pci_mmap_state {
type pci_p2pdma_map_type (line 52873) | enum pci_p2pdma_map_type {
type pcie_bus_config_types (line 52880) | enum pcie_bus_config_types {
type pcie_kirin_phy_type (line 52888) | enum pcie_kirin_phy_type {
type pcie_link_width (line 52893) | enum pcie_link_width {
type pcie_reset_state (line 52905) | enum pcie_reset_state {
type pcim_addr_devres_type (line 52911) | enum pcim_addr_devres_type {
type pcpu_fc (line 52918) | enum pcpu_fc {
type pdc_irq_config_bits (line 52925) | enum pdc_irq_config_bits {
type pedit_cmd (line 52933) | enum pedit_cmd {
type pedit_header_type (line 52939) | enum pedit_header_type {
type perf_addr_filter_action_t (line 52949) | enum perf_addr_filter_action_t {
type perf_bpf_event_type (line 52955) | enum perf_bpf_event_type {
type perf_branch_sample_type (line 52962) | enum perf_branch_sample_type {
type perf_branch_sample_type_shift (line 52986) | enum perf_branch_sample_type_shift {
type perf_callchain_context (line 53010) | enum perf_callchain_context {
type perf_event_arm_regs (line 53020) | enum perf_event_arm_regs {
type perf_event_ioc_flags (line 53059) | enum perf_event_ioc_flags {
type perf_event_read_format (line 53063) | enum perf_event_read_format {
type perf_event_sample_format (line 53072) | enum perf_event_sample_format {
type perf_event_state (line 53101) | enum perf_event_state {
type perf_event_task_context (line 53110) | enum perf_event_task_context {
type perf_event_type (line 53117) | enum perf_event_type {
type perf_hw_cache_id (line 53142) | enum perf_hw_cache_id {
type perf_hw_cache_op_id (line 53153) | enum perf_hw_cache_op_id {
type perf_hw_cache_op_result_id (line 53160) | enum perf_hw_cache_op_result_id {
type perf_hw_id (line 53166) | enum perf_hw_id {
type perf_pmu_scope (line 53180) | enum perf_pmu_scope {
type perf_probe_config (line 53190) | enum perf_probe_config {
type perf_record_ksymbol_type (line 53196) | enum perf_record_ksymbol_type {
type perf_sample_regs_abi (line 53203) | enum perf_sample_regs_abi {
type perf_sw_ids (line 53209) | enum perf_sw_ids {
type perf_type_id (line 53225) | enum perf_type_id {
type pf8x00_buck_states (line 53235) | enum pf8x00_buck_states {
type pf8x00_devid (line 53244) | enum pf8x00_devid {
type pf8x00_ldo_states (line 53250) | enum pf8x00_ldo_states {
type pf8x00_regulators (line 53258) | enum pf8x00_regulators {
type pg_states (line 53274) | enum pg_states {
type pgdat_flags (line 53280) | enum pgdat_flags {
type pgt_entry (line 53286) | enum pgt_entry {
type phy_event (line 53293) | enum phy_event {
type phy_func (line 53303) | enum phy_func {
type phy_led_modes (line 53316) | enum phy_led_modes {
type phy_media (line 53323) | enum phy_media {
type phy_mode (line 53329) | enum phy_mode {
type phy_reset_delays (line 53352) | enum phy_reset_delays {
type phy_state (line 53359) | enum phy_state {
type phy_state_work (line 53370) | enum phy_state_work {
type phy_tunable_id (line 53376) | enum phy_tunable_id {
type phy_upstream (line 53384) | enum phy_upstream {
type phylink_op_type (line 53389) | enum phylink_op_type {
type pid_type (line 53394) | enum pid_type {
type pidcg_event (line 53402) | enum pidcg_event {
type pin_config_param (line 53408) | enum pin_config_param {
type pincfg_type (line 53439) | enum pincfg_type {
type pinctrl_map_type (line 53449) | enum pinctrl_map_type {
type pkcs7_actions (line 53457) | enum pkcs7_actions {
type pkt_hash_types (line 53478) | enum pkt_hash_types {
type pkvm_component_id (line 53485) | enum pkvm_component_id {
type pkvm_page_state (line 53491) | enum pkvm_page_state {
type pl011_rs485_tx_state (line 53499) | enum pl011_rs485_tx_state {
type pl330_byteswap (line 53506) | enum pl330_byteswap {
type pl330_cachectrl (line 53514) | enum pl330_cachectrl {
type pl330_cond (line 53525) | enum pl330_cond {
type pl330_dmac_state (line 53531) | enum pl330_dmac_state {
type pl330_op_err (line 53537) | enum pl330_op_err {
type pll_ctrl_bits (line 53543) | enum pll_ctrl_bits {
type pll_mode (line 53550) | enum pll_mode {
type pm_api_cb_id (line 53556) | enum pm_api_cb_id {
type pm_api_id (line 53562) | enum pm_api_id {
type pm_feature_config_id (line 53601) | enum pm_feature_config_id {
type pm_gem_config_type (line 53609) | enum pm_gem_config_type {
type pm_ioctl_id (line 53614) | enum pm_ioctl_id {
type pm_module_id (line 53641) | enum pm_module_id {
type pm_node_id (line 53648) | enum pm_node_id {
type pm_pinctrl_bias_status (line 53653) | enum pm_pinctrl_bias_status {
type pm_pinctrl_config_param (line 53658) | enum pm_pinctrl_config_param {
type pm_pinctrl_drive_strength (line 53669) | enum pm_pinctrl_drive_strength {
type pm_pinctrl_pull_ctrl (line 53676) | enum pm_pinctrl_pull_ctrl {
type pm_pinctrl_tri_state (line 53681) | enum pm_pinctrl_tri_state {
type pm_qos_flags_status (line 53686) | enum pm_qos_flags_status {
type pm_qos_req_action (line 53693) | enum pm_qos_req_action {
type pm_qos_type (line 53699) | enum pm_qos_type {
type pm_query_id (line 53705) | enum pm_query_id {
type pm_ret_status (line 53723) | enum pm_ret_status {
type pm_sd_config_type (line 53737) | enum pm_sd_config_type {
type pm_suspend_mode (line 53744) | enum pm_suspend_mode {
type pmic_arb_channel (line 53750) | enum pmic_arb_channel {
type pmic_arb_chnl_status (line 53755) | enum pmic_arb_chnl_status {
type pmic_arb_cmd_op_code (line 53762) | enum pmic_arb_cmd_op_code {
type pmic_gpio_func_index (line 53779) | enum pmic_gpio_func_index {
type pmic_type (line 53792) | enum pmic_type {
type pnfs_iomode (line 53804) | enum pnfs_iomode {
type pnfs_layout_destroy_mode (line 53810) | enum pnfs_layout_destroy_mode {
type pnfs_layoutreturn_type (line 53816) | enum pnfs_layoutreturn_type {
type pnfs_layouttype (line 53822) | enum pnfs_layouttype {
type pnfs_notify_deviceid_type4 (line 53831) | enum pnfs_notify_deviceid_type4 {
type pnfs_try_status (line 53836) | enum pnfs_try_status {
type pnfs_update_layout_reason (line 53842) | enum pnfs_update_layout_reason {
type poll_time_type (line 53859) | enum poll_time_type {
type pool_workqueue_stats (line 53866) | enum pool_workqueue_stats {
type port_event (line 53878) | enum port_event {
type port_pkey_state (line 53887) | enum port_pkey_state {
type port_type (line 53893) | enum port_type {
type positive_aop_returns (line 53898) | enum positive_aop_returns {
type posix_timer_state (line 53903) | enum posix_timer_state {
type power_desc_param_offset (line 53909) | enum power_desc_param_offset {
type power_supply_charge_behaviour (line 53917) | enum power_supply_charge_behaviour {
type power_supply_charge_type (line 53923) | enum power_supply_charge_type {
type power_supply_notifier_events (line 53935) | enum power_supply_notifier_events {
type power_supply_property (line 53939) | enum power_supply_property {
type power_supply_type (line 54019) | enum power_supply_type {
type power_supply_usb_type (line 54035) | enum power_supply_usb_type {
type ppe_common_mode (line 54048) | enum ppe_common_mode {
type ppe_port_mode (line 54054) | enum ppe_port_mode {
type ppe_qid_mode (line 54059) | enum ppe_qid_mode {
type pr_status (line 54074) | enum pr_status {
type pr_type (line 54083) | enum pr_type {
type prep_dispatch (line 54092) | enum prep_dispatch {
type pri_resp (line 54098) | enum pri_resp {
type print_line_t (line 54104) | enum print_line_t {
type printk_info_flags (line 54111) | enum printk_info_flags {
type priv_stack_mode (line 54117) | enum priv_stack_mode {
type probe_insn (line 54123) | enum probe_insn {
type probe_print_type (line 54129) | enum probe_print_type {
type probe_type (line 54135) | enum probe_type {
type proc_cn_event (line 54141) | enum proc_cn_event {
type proc_hidepid (line 54155) | enum proc_hidepid {
type proc_mem_force (line 54162) | enum proc_mem_force {
type proc_param (line 54168) | enum proc_param {
type proc_pidonly (line 54174) | enum proc_pidonly {
type procmap_query_flags (line 54179) | enum procmap_query_flags {
type prs_errcode (line 54188) | enum prs_errcode {
type ps2_disposition (line 54201) | enum ps2_disposition {
type psil_endpoint_type (line 54207) | enum psil_endpoint_type {
type psmouse_scale (line 54214) | enum psmouse_scale {
type psmouse_state (line 54219) | enum psmouse_state {
type psmouse_type (line 54227) | enum psmouse_type {
type pstore_type_id (line 54254) | enum pstore_type_id {
type ptp_clock_events (line 54267) | enum ptp_clock_events {
type ptp_pin_function (line 54275) | enum ptp_pin_function {
type ptrace_syscall_dir (line 54282) | enum ptrace_syscall_dir {
type pud_index (line 54287) | enum pud_index {
type pwm_polarity (line 54294) | enum pwm_polarity {
type pwrap_regs (line 54299) | enum pwrap_regs {
type pwrap_type (line 54448) | enum pwrap_type {
type px30_plls (line 54465) | enum px30_plls {
type px30_pmu_plls (line 54474) | enum px30_pmu_plls {
type pxa_i2c_types (line 54478) | enum pxa_i2c_types {
type qb_enqueue_commands (line 54486) | enum qb_enqueue_commands {
type qb_pull_dt_e (line 54492) | enum qb_pull_dt_e {
type qbman_pull_type_e (line 54498) | enum qbman_pull_type_e {
type qbman_sdqcr_dct (line 54504) | enum qbman_sdqcr_dct {
type qbman_sdqcr_fc (line 54511) | enum qbman_sdqcr_fc {
type qcm2290_functions (line 54516) | enum qcm2290_functions {
type qcom_icc_type (line 54621) | enum qcom_icc_type {
type qcom_iommu_clk (line 54627) | enum qcom_iommu_clk {
type qcom_scm_arg_types (line 54634) | enum qcom_scm_arg_types {
type qcom_scm_convention (line 54641) | enum qcom_scm_convention {
type qcom_scm_ice_cipher (line 54648) | enum qcom_scm_ice_cipher {
type qcom_scm_ocmem_client (line 54655) | enum qcom_scm_ocmem_client {
type qcom_scm_qseecom_resp_type (line 54665) | enum qcom_scm_qseecom_resp_type {
type qcom_scm_qseecom_result (line 54670) | enum qcom_scm_qseecom_result {
type qcom_scm_qseecom_tz_cmd_app (line 54677) | enum qcom_scm_qseecom_tz_cmd_app {
type qcom_scm_qseecom_tz_cmd_info (line 54682) | enum qcom_scm_qseecom_tz_cmd_info {
type qcom_scm_qseecom_tz_owner (line 54686) | enum qcom_scm_qseecom_tz_owner {
type qcom_scm_qseecom_tz_svc (line 54692) | enum qcom_scm_qseecom_tz_svc {
type qcom_smmu_impl_reg_offset (line 54698) | enum qcom_smmu_impl_reg_offset {
type qcom_socinfo_feature_code (line 54704) | enum qcom_socinfo_feature_code {
type qcom_tzmem_policy (line 54716) | enum qcom_tzmem_policy {
type qcs404_functions (line 54722) | enum qcs404_functions {
type qcs615_functions (line 54909) | enum qcs615_functions {
type qcs8300_functions (line 54988) | enum qcs8300_functions {
type qdisc_class_ops_flags (line 55089) | enum qdisc_class_ops_flags {
type qdisc_state2_t (line 55093) | enum qdisc_state2_t {
type qdisc_state_t (line 55097) | enum qdisc_state_t {
type qdu1000_functions (line 55104) | enum qdu1000_functions {
type qm_dc_portal (line 55218) | enum qm_dc_portal {
type qm_dqrr_cmode (line 55223) | enum qm_dqrr_cmode {
type qm_dqrr_dmode (line 55229) | enum qm_dqrr_dmode {
type qm_dqrr_pmode (line 55234) | enum qm_dqrr_pmode {
type qm_eqcr_pmode (line 55240) | enum qm_eqcr_pmode {
type qm_fd_format (line 55246) | enum qm_fd_format {
type qm_memory (line 55254) | enum qm_memory {
type qm_mr_cmode (line 55259) | enum qm_mr_cmode {
type qm_mr_pmode (line 55264) | enum qm_mr_pmode {
type qm_wq_class (line 55270) | enum qm_wq_class {
type qman_cb_dqrr_result (line 55281) | enum qman_cb_dqrr_result {
type qman_fq_state (line 55289) | enum qman_fq_state {
type qos_mode (line 55296) | enum qos_mode {
type qpnpint_regs (line 55302) | enum qpnpint_regs {
type query_opcode (line 55313) | enum query_opcode {
type queue_mode (line 55325) | enum queue_mode {
type quota_type (line 55330) | enum quota_type {
type r8a77970_clk_types (line 55336) | enum r8a77970_clk_types {
type ramfs_param (line 55341) | enum ramfs_param {
type ravb_reg (line 55345) | enum ravb_reg {
type rcar_gen3_clk_types (line 55508) | enum rcar_gen3_clk_types {
type rcar_gen3_phy_index (line 55530) | enum rcar_gen3_phy_index {
type rcar_gen4_clk_types (line 55537) | enum rcar_gen4_clk_types {
type rcar_gen4_ptp_reg (line 55558) | enum rcar_gen4_ptp_reg {
type rcar_gen4_ptp_reg_layout (line 55570) | enum rcar_gen4_ptp_reg_layout {
type rcar_i2c_type (line 55574) | enum rcar_i2c_type {
type rcb_int_flag (line 55581) | enum rcb_int_flag {
type rdma_ah_attr_type (line 55587) | enum rdma_ah_attr_type {
type rdma_driver_id (line 55594) | enum rdma_driver_id {
type rdma_link_layer (line 55619) | enum rdma_link_layer {
type rdma_netdev_t (line 55625) | enum rdma_netdev_t {
type rdma_nl_counter_mask (line 55630) | enum rdma_nl_counter_mask {
type rdma_nl_counter_mode (line 55635) | enum rdma_nl_counter_mode {
type rdma_nl_dev_type (line 55642) | enum rdma_nl_dev_type {
type rdma_nl_name_assign_type (line 55646) | enum rdma_nl_name_assign_type {
type rdma_restrack_type (line 55651) | enum rdma_restrack_type {
type reboot_mode (line 55663) | enum reboot_mode {
type reboot_type (line 55672) | enum reboot_type {
type ref_state_type (line 55682) | enum ref_state_type {
type refcount_saturation_type (line 55688) | enum refcount_saturation_type {
type reg_arg_type (line 55696) | enum reg_arg_type {
type regcache_type (line 55702) | enum regcache_type {
type regex_type (line 55709) | enum regex_type {
type regfield_ids (line 55718) | enum regfield_ids {
type regmap_endian (line 56042) | enum regmap_endian {
type regulator_active_discharge (line 56049) | enum regulator_active_discharge {
type regulator_detection_severity (line 56055) | enum regulator_detection_severity {
type regulator_get_type (line 56061) | enum regulator_get_type {
type regulator_status (line 56068) | enum regulator_status {
type regulator_type (line 56080) | enum regulator_type {
type release_type (line 56085) | enum release_type {
type renesas_sdhi_dma_cookie (line 56090) | enum renesas_sdhi_dma_cookie {
type req_flag_bits (line 56096) | enum req_flag_bits {
type req_op (line 56121) | enum req_op {
type resctrl_conf_type (line 56139) | enum resctrl_conf_type {
type reset_control_flags (line 56145) | enum reset_control_flags {
type resolve_mode (line 56158) | enum resolve_mode {
type rgmii_clock_delay (line 56164) | enum rgmii_clock_delay {
type riic_reg_list (line 56175) | enum riic_reg_list {
type ring_buffer_flags (line 56191) | enum ring_buffer_flags {
type ring_buffer_type (line 56195) | enum ring_buffer_type {
type ring_id (line 56202) | enum ring_id {
type ripas (line 56207) | enum ripas {
type rk3308_plls (line 56214) | enum rk3308_plls {
type rk3328_plls (line 56221) | enum rk3328_plls {
type rk3368_plls (line 56229) | enum rk3368_plls {
type rk3399_plls (line 56238) | enum rk3399_plls {
type rk3399_pmu_plls (line 56248) | enum rk3399_pmu_plls {
type rk3568_plls (line 56252) | enum rk3568_plls {
type rk3568_pmu_plls (line 56261) | enum rk3568_pmu_plls {
type rk3576_plls (line 56266) | enum rk3576_plls {
type rk3588_plls (line 56276) | enum rk3588_plls {
type rk3x_i2c_state (line 56288) | enum rk3x_i2c_state {
type rk805_reg (line 56296) | enum rk805_reg {
type rk806_irqs (line 56306) | enum rk806_irqs {
type rk806_reg_id (line 56325) | enum rk806_reg_id {
type rk808_reg (line 56350) | enum rk808_reg {
type rk809_reg_id (line 56367) | enum rk809_reg_id {
type rk816_irqs (line 56374) | enum rk816_irqs {
type rk816_reg (line 56393) | enum rk816_reg {
type rk817_reg_id (line 56408) | enum rk817_reg_id {
type rk818_reg (line 56427) | enum rk818_reg {
type rlimit_type (line 56447) | enum rlimit_type {
type rmap_level (line 56455) | enum rmap_level {
type rmi_reg_state (line 56460) | enum rmi_reg_state {
type rmi_sensor_type (line 56466) | enum rmi_sensor_type {
type rmp_flags (line 56472) | enum rmp_flags {
type rockchip_clk_branch_type (line 56477) | enum rockchip_clk_branch_type {
type rockchip_mux_route_location (line 56492) | enum rockchip_mux_route_location {
type rockchip_pin_drv_type (line 56498) | enum rockchip_pin_drv_type {
type rockchip_pin_pull_type (line 56507) | enum rockchip_pin_pull_type {
type rockchip_pinctrl_type (line 56513) | enum rockchip_pinctrl_type {
type rockchip_pll_type (line 56532) | enum rockchip_pll_type {
type rockchip_usb2phy_host_state (line 56542) | enum rockchip_usb2phy_host_state {
type rockchip_usb2phy_port_id (line 56549) | enum rockchip_usb2phy_port_id {
type rohm_chip_type (line 56555) | enum rohm_chip_type {
type routing_attribute (line 56568) | enum routing_attribute {
type rp_check (line 56574) | enum rp_check {
type rpc_accept_stat (line 56580) | enum rpc_accept_stat {
type rpc_auth_flavors (line 56590) | enum rpc_auth_flavors {
type rpc_auth_stat (line 56610) | enum rpc_auth_stat {
type rpc_display_format_t (line 56621) | enum rpc_display_format_t {
type rpc_gss_proc (line 56631) | enum rpc_gss_proc {
type rpc_gss_svc (line 56638) | enum rpc_gss_svc {
type rpc_msg_type (line 56644) | enum rpc_msg_type {
type rpc_reject_stat (line 56649) | enum rpc_reject_stat {
type rpc_reply_stat (line 56654) | enum rpc_reply_stat {
type rpi_firmware_property_status (line 56659) | enum rpi_firmware_property_status {
type rpi_firmware_property_tag (line 56665) | enum rpi_firmware_property_tag {
type rpm_request (line 56762) | enum rpm_request {
type rpm_status (line 56770) | enum rpm_status {
type rpmb_type (line 56778) | enum rpmb_type {
type rpmb_unit_desc_param (line 56784) | enum rpmb_unit_desc_param {
type rpmh_regulator_type (line 56805) | enum rpmh_regulator_type {
type rpmh_state (line 56810) | enum rpmh_state {
type rpmsg_ns_flags (line 56816) | enum rpmsg_ns_flags {
type rproc_crash_type (line 56821) | enum rproc_crash_type {
type rproc_dump_mechanism (line 56827) | enum rproc_dump_mechanism {
type rproc_features (line 56833) | enum rproc_features {
type rproc_state (line 56838) | enum rproc_state {
type rpu_oper_mode (line 56849) | enum rpu_oper_mode {
type rpu_tcm_comb (line 56854) | enum rpu_tcm_comb {
type rq_end_io_ret (line 56859) | enum rq_end_io_ret {
type rq_qos_id (line 56864) | enum rq_qos_id {
type rqf_flags (line 56870) | enum rqf_flags {
type rsaprivkey_actions (line 56890) | enum rsaprivkey_actions {
type rsapubkey_actions (line 56902) | enum rsapubkey_actions {
type rsc_handling_status (line 56908) | enum rsc_handling_status {
type rseq_cpu_id_state (line 56913) | enum rseq_cpu_id_state {
type rseq_cs_flags (line 56918) | enum rseq_cs_flags {
type rseq_cs_flags_bit (line 56924) | enum rseq_cs_flags_bit {
type rseq_event_mask_bits (line 56930) | enum rseq_event_mask_bits {
type rseq_flags (line 56936) | enum rseq_flags {
type rswitch_etha_mode (line 56940) | enum rswitch_etha_mode {
type rswitch_gwca_mode (line 56947) | enum rswitch_gwca_mode {
type rswitch_reg (line 56954) | enum rswitch_reg {
type rt_class_t (line 57595) | enum rt_class_t {
type rt_scope_t (line 57604) | enum rt_scope_t {
type rtattr_type_t (line 57612) | enum rtattr_type_t {
type rtd13xxd_iso_pins (line 57648) | enum rtd13xxd_iso_pins {
type rtd13xxe_iso_pins (line 57758) | enum rtd13xxe_iso_pins {
type rtd16xxb_iso_pins (line 57865) | enum rtd16xxb_iso_pins {
type rtmutex_chainwalk (line 57980) | enum rtmutex_chainwalk {
type rtnetlink_groups (line 57985) | enum rtnetlink_groups {
type rtnl_kinds (line 58029) | enum rtnl_kinds {
type rtnl_link_flags (line 58036) | enum rtnl_link_flags {
type rtsn_mode (line 58043) | enum rtsn_mode {
type rtsn_reg (line 58049) | enum rtsn_reg {
type rw_hint (line 58311) | enum rw_hint {
type rwsem_waiter_type (line 58320) | enum rwsem_waiter_type {
type rwsem_wake_type (line 58325) | enum rwsem_wake_type {
type rwsig_action (line 58331) | enum rwsig_action {
type rx_handler_result (line 58336) | enum rx_handler_result {
type rx_handler_result_t (line 58343) | typedef enum rx_handler_result rx_handler_result_t;
type rx_stats_reg_offset (line 58345) | enum rx_stats_reg_offset {
type rz_dmac_prep_type (line 58363) | enum rz_dmac_prep_type {
type rz_mtu3_channels (line 58368) | enum rz_mtu3_channels {
type rz_wdt_type (line 58381) | enum rz_wdt_type {
type rzg2l_iolh_index (line 58386) | enum rzg2l_iolh_index {
type s2idle_states (line 58393) | enum s2idle_states {
type s2mpa01_reg (line 58399) | enum s2mpa01_reg {
type s2mps11_irq (line 58496) | enum s2mps11_irq {
type s2mps11_reg (line 58516) | enum s2mps11_reg {
type s2mps11_regulators (line 58618) | enum s2mps11_regulators {
type s2mps13_reg (line 58670) | enum s2mps13_reg {
type s2mps13_regulators (line 58772) | enum s2mps13_regulators {
type s2mps14_irq (line 58826) | enum s2mps14_irq {
type s2mps14_reg (line 58847) | enum s2mps14_reg {
type s2mps14_regulators (line 58913) | enum s2mps14_regulators {
type s2mps15_reg (line 58947) | enum s2mps15_reg {
type s2mps15_regulators (line 59033) | enum s2mps15_regulators {
type s2mps_rtc_reg (line 59075) | enum s2mps_rtc_reg {
type s2mpu02_irq (line 59105) | enum s2mpu02_irq {
type s3c24xx_i2c_state (line 59126) | enum s3c24xx_i2c_state {
type s3c24xx_port_type (line 59134) | enum s3c24xx_port_type {
type s5m8767_irq (line 59139) | enum s5m8767_irq {
type s5m8767_reg (line 59160) | enum s5m8767_reg {
type s5m_rtc_reg (line 59284) | enum s5m_rtc_reg {
type s700_pinconf_pull (line 59317) | enum s700_pinconf_pull {
type s700_pinmux_functions (line 59322) | enum s700_pinmux_functions {
type s900_pinconf_pull (line 59374) | enum s900_pinconf_pull {
type s900_pinmux_functions (line 59381) | enum s900_pinmux_functions {
type s_alloc (line 59436) | enum s_alloc {
type sa8775p_functions (line 59443) | enum sa8775p_functions {
type sam_status (line 59587) | enum sam_status {
type samsung_pll_type (line 59601) | enum samsung_pll_type {
type sas_device_type (line 59642) | enum sas_device_type {
type sas_gpio_reg_type (line 59654) | enum sas_gpio_reg_type {
type sas_ha_state (line 59662) | enum sas_ha_state {
type sas_internal_abort (line 59670) | enum sas_internal_abort {
type sas_linkrate (line 59675) | enum sas_linkrate {
type sas_oob_mode (line 59693) | enum sas_oob_mode {
type sas_open_rej_reason (line 59699) | enum sas_open_rej_reason {
type sas_phy_role (line 59721) | enum sas_phy_role {
type sas_protocol (line 59727) | enum sas_protocol {
type sata_phy_ctrl_regs (line 59738) | enum sata_phy_ctrl_regs {
type sata_phy_regs (line 59743) | enum sata_phy_regs {
type sata_rcar_type (line 59844) | enum sata_rcar_type {
type sc7180_functions (line 59851) | enum sc7180_functions {
type sc7280_functions (line 59968) | enum sc7280_functions {
type sc8180x_functions (line 60119) | enum sc8180x_functions {
type sc8280xp_functions (line 60252) | enum sc8280xp_functions {
type scale_freq_source (line 60421) | enum scale_freq_source {
type scan_balance (line 60428) | enum scan_balance {
type scan_result (line 60435) | enum scan_result {
type sched_tunable_scaling (line 60470) | enum sched_tunable_scaling {
type scmi_bad_msg (line 60477) | enum scmi_bad_msg {
type scmi_base_protocol_cmd (line 60485) | enum scmi_base_protocol_cmd {
type scmi_clk_feats (line 60497) | enum scmi_clk_feats {
type scmi_clock_oem_config (line 60506) | enum scmi_clock_oem_config {
type scmi_clock_protocol_cmd (line 60513) | enum scmi_clock_protocol_cmd {
type scmi_common_cmd (line 60529) | enum scmi_common_cmd {
type scmi_error_codes (line 60536) | enum scmi_error_codes {
type scmi_imx_bbm_protocol_cmd (line 60550) | enum scmi_imx_bbm_protocol_cmd {
type scmi_imx_misc_protocol_cmd (line 60562) | enum scmi_imx_misc_protocol_cmd {
type scmi_notification_events (line 60568) | enum scmi_notification_events {
type scmi_nxp_notification_events (line 60583) | enum scmi_nxp_notification_events {
type scmi_optee_pta_cmd (line 60589) | enum scmi_optee_pta_cmd {
type scmi_performance_protocol_cmd (line 60597) | enum scmi_performance_protocol_cmd {
type scmi_pinctrl_conf_type (line 60610) | enum scmi_pinctrl_conf_type {
type scmi_pinctrl_protocol_cmd (line 60636) | enum scmi_pinctrl_protocol_cmd {
type scmi_pinctrl_selector_type (line 60647) | enum scmi_pinctrl_selector_type {
type scmi_power_protocol_cmd (line 60653) | enum scmi_power_protocol_cmd {
type scmi_power_scale (line 60661) | enum scmi_power_scale {
type scmi_powercap_protocol_cmd (line 60667) | enum scmi_powercap_protocol_cmd {
type scmi_reset_protocol_cmd (line 60680) | enum scmi_reset_protocol_cmd {
type scmi_sensor_class (line 60687) | enum scmi_sensor_class {
type scmi_sensor_protocol_cmd (line 60785) | enum scmi_sensor_protocol_cmd {
type scmi_std_protocol (line 60799) | enum scmi_std_protocol {
type scmi_system_events (line 60812) | enum scmi_system_events {
type scmi_system_protocol_cmd (line 60821) | enum scmi_system_protocol_cmd {
type scmi_voltage_level_mode (line 60825) | enum scmi_voltage_level_mode {
type scmi_voltage_protocol_cmd (line 60830) | enum scmi_voltage_protocol_cmd {
type scpi_drv_cmds (line 60840) | enum scpi_drv_cmds {
type scpi_error_codes (line 60856) | enum scpi_error_codes {
type scpi_power_domain_state (line 60873) | enum scpi_power_domain_state {
type scpi_sensor_class (line 60878) | enum scpi_sensor_class {
type scpi_std_cmd (line 60886) | enum scpi_std_cmd {
type scpsys_bus_prot_flags (line 60919) | enum scpsys_bus_prot_flags {
type scrub_type (line 60928) | enum scrub_type {
type scsi_cmnd_submitter (line 60941) | enum scsi_cmnd_submitter {
type scsi_device_event (line 60947) | enum scsi_device_event {
type scsi_device_state (line 60961) | enum scsi_device_state {
type scsi_devinfo_key (line 60973) | enum scsi_devinfo_key {
type scsi_disposition (line 60978) | enum scsi_disposition {
type scsi_host_guard_type (line 60990) | enum scsi_host_guard_type {
type scsi_host_prot_capabilities (line 60995) | enum scsi_host_prot_capabilities {
type scsi_host_state (line 61005) | enum scsi_host_state {
type scsi_host_status (line 61015) | enum scsi_host_status {
type scsi_ml_status (line 61035) | enum scsi_ml_status {
type scsi_msg_byte (line 61044) | enum scsi_msg_byte {
type scsi_pr_type (line 61075) | enum scsi_pr_type {
type scsi_prot_flags (line 61084) | enum scsi_prot_flags {
type scsi_prot_operations (line 61092) | enum scsi_prot_operations {
type scsi_scan_mode (line 61102) | enum scsi_scan_mode {
type scsi_target_state (line 61108) | enum scsi_target_state {
type scsi_timeout_action (line 61116) | enum scsi_timeout_action {
type scsi_timeouts (line 61122) | enum scsi_timeouts {
type scsi_vpd_parameters (line 61126) | enum scsi_vpd_parameters {
type sctp_conntrack (line 61131) | enum sctp_conntrack {
type sctp_msg_flags (line 61145) | enum sctp_msg_flags {
type sd_uhs2_operation (line 61149) | enum sd_uhs2_operation {
type sdhci_cookie (line 61160) | enum sdhci_cookie {
type sdhci_reset_reason (line 61166) | enum sdhci_reset_reason {
type sdm660_functions (line 61175) | enum sdm660_functions {
type sdm670_functions (line 61361) | enum sdm670_functions {
type sdm845_functions (line 61490) | enum sdm845_functions {
type sdx75_functions (line 61623) | enum sdx75_functions {
type sec_device_type (line 61734) | enum sec_device_type {
type serdev_parity (line 61745) | enum serdev_parity {
type serio_event_type (line 61751) | enum serio_event_type {
type service_response (line 61759) | enum service_response {
type set_event_iter_type (line 61764) | enum set_event_iter_type {
type sgmii_speed (line 61769) | enum sgmii_speed {
type sgp_type (line 61776) | enum sgp_type {
type sh_cmt_model (line 61784) | enum sh_cmt_model {
type sh_mobile_i2c_op (line 61792) | enum sh_mobile_i2c_op {
type sh_tmu_model (line 61803) | enum sh_tmu_model {
type shmem_param (line 61808) | enum shmem_param {
type shutdown_state (line 61832) | enum shutdown_state {
type si_type (line 61839) | enum si_type {
type sig_handler (line 61847) | enum sig_handler {
type siginfo_layout (line 61853) | enum siginfo_layout {
type sk_action (line 61868) | enum sk_action {
type sk_pacing (line 61873) | enum sk_pacing {
type sk_psock_state_bits (line 61879) | enum sk_psock_state_bits {
type sk_rst_reason (line 61884) | enum sk_rst_reason {
type skb_drop_reason (line 61913) | enum skb_drop_reason {
type skb_drop_reason_subsys (line 62033) | enum skb_drop_reason_subsys {
type skb_ext_id (line 62041) | enum skb_ext_id {
type skb_tstamp_type (line 62046) | enum skb_tstamp_type {
type sknetlink_groups (line 62053) | enum sknetlink_groups {
type slab_stat_type (line 62062) | enum slab_stat_type {
type slab_state (line 62070) | enum slab_state {
type sm4450_functions (line 62077) | enum sm4450_functions {
type sm6115_functions (line 62151) | enum sm6115_functions {
type sm6125_functions (line 62222) | enum sm6125_functions {
type sm6350_functions (line 62353) | enum sm6350_functions {
type sm6375_functions (line 62491) | enum sm6375_functions {
type sm8150_functions (line 62660) | enum sm8150_functions {
type sm8250_functions (line 62793) | enum sm8250_functions {
type sm8350_functions (line 62912) | enum sm8350_functions {
type sm8450_functions (line 63051) | enum sm8450_functions {
type sm8550_functions (line 63191) | enum sm8550_functions {
type sm8650_functions (line 63341) | enum sm8650_functions {
type sm8750_functions (line 63483) | enum sm8750_functions {
type smbios_attr_enum (line 63623) | enum smbios_attr_enum {
type smcwd_call (line 63629) | enum smcwd_call {
type smd_channel_state (line 63637) | enum smd_channel_state {
type snd_compr_direction (line 63647) | enum snd_compr_direction {
type snd_compr_state (line 63653) | enum snd_compr_state {
type snd_ctl_add_mode (line 63659) | enum snd_ctl_add_mode {
type snd_device_state (line 63665) | enum snd_device_state {
type snd_device_type (line 63671) | enum snd_device_type {
type snd_dma_sync_mode (line 63686) | enum snd_dma_sync_mode {
type snd_jack_types (line 63691) | enum snd_jack_types {
type snd_soc_bias_level (line 63708) | enum snd_soc_bias_level {
type snd_soc_dapm_direction (line 63715) | enum snd_soc_dapm_direction {
type snd_soc_dapm_type (line 63720) | enum snd_soc_dapm_type {
type snd_soc_dobj_type (line 63762) | enum snd_soc_dobj_type {
type snd_soc_dpcm_link_state (line 63775) | enum snd_soc_dpcm_link_state {
type snd_soc_dpcm_state (line 63780) | enum snd_soc_dpcm_state {
type snd_soc_dpcm_trigger (line 63793) | enum snd_soc_dpcm_trigger {
type snd_soc_dpcm_update (line 63798) | enum snd_soc_dpcm_update {
type snd_soc_pcm_subclass (line 63804) | enum snd_soc_pcm_subclass {
type snd_soc_trigger_order (line 63809) | enum snd_soc_trigger_order {
type sndrv_ctl_event_type (line 63815) | enum sndrv_ctl_event_type {
type snoop_when (line 63820) | enum snoop_when {
type soc_pad_ctrl_type (line 63825) | enum soc_pad_ctrl_type {
type soc_type (line 63830) | enum soc_type {
type sock_flags (line 63842) | enum sock_flags {
type sock_shutdown_cmd (line 63874) | enum sock_shutdown_cmd {
type sock_type (line 63880) | enum sock_type {
type special_kfunc_type (line 63890) | enum special_kfunc_type {
type spectre_v4_policy (line 63926) | enum spectre_v4_policy {
type spi_mem_data_dir (line 63932) | enum spi_mem_data_dir {
type spi_nor_cmd_ext (line 63938) | enum spi_nor_cmd_ext {
type spi_nor_option_flags (line 63945) | enum spi_nor_option_flags {
type spi_nor_pp_command_index (line 63966) | enum spi_nor_pp_command_index {
type spi_nor_protocol (line 63978) | enum spi_nor_protocol {
type spi_nor_read_command_index (line 63996) | enum spi_nor_read_command_index {
type spmi_boost_byp_registers (line 64016) | enum spmi_boost_byp_registers {
type spmi_boost_registers (line 64020) | enum spmi_boost_registers {
type spmi_common_control_register_index (line 64024) | enum spmi_common_control_register_index {
type spmi_common_regulator_registers (line 64031) | enum spmi_common_regulator_registers {
type spmi_ftsmps426_regulator_registers (line 64044) | enum spmi_ftsmps426_regulator_registers {
type spmi_hfsmps_regulator_registers (line 64051) | enum spmi_hfsmps_regulator_registers {
type spmi_regulator_logical_type (line 64056) | enum spmi_regulator_logical_type {
type spmi_regulator_subtype (line 64074) | enum spmi_regulator_subtype {
type spmi_regulator_type (line 64141) | enum spmi_regulator_type {
type spmi_saw3_registers (line 64152) | enum spmi_saw3_registers {
type spmi_vs_registers (line 64169) | enum spmi_vs_registers {
type spmi_vs_soft_start_str (line 64174) | enum spmi_vs_soft_start_str {
type squashfs_param (line 64182) | enum squashfs_param {
type ssp_clkdelay (line 64187) | enum ssp_clkdelay {
type ssp_data_size (line 64198) | enum ssp_data_size {
type ssp_duplex (line 64230) | enum ssp_duplex {
type ssp_hierarchy (line 64235) | enum ssp_hierarchy {
type ssp_interface (line 64240) | enum ssp_interface {
type ssp_loopback (line 64247) | enum ssp_loopback {
type ssp_microwire_ctrl_len (line 64252) | enum ssp_microwire_ctrl_len {
type ssp_microwire_wait_state (line 64284) | enum ssp_microwire_wait_state {
type ssp_mode (line 64289) | enum ssp_mode {
type ssp_reading (line 64295) | enum ssp_reading {
type ssp_rx_endian (line 64302) | enum ssp_rx_endian {
type ssp_rx_level_trig (line 64307) | enum ssp_rx_level_trig {
type ssp_spi_clk_phase (line 64315) | enum ssp_spi_clk_phase {
type ssp_spi_clk_pol (line 64320) | enum ssp_spi_clk_pol {
type ssp_tx_endian (line 64325) | enum ssp_tx_endian {
type ssp_tx_level_trig (line 64330) | enum ssp_tx_level_trig {
type ssp_writing (line 64338) | enum ssp_writing {
type ssusb_uwk_vers (line 64345) | enum ssusb_uwk_vers {
type ssusb_uwk_vers___2 (line 64356) | enum ssusb_uwk_vers___2 {
type stat_group (line 64366) | enum stat_group {
type stat_item (line 64374) | enum stat_item {
type state (line 64404) | enum state {
type state_protect_how4 (line 64415) | enum state_protect_how4 {
type status_css (line 64421) | enum status_css {
type store_type (line 64432) | enum store_type {
type stratix10_svc_command_code (line 64445) | enum stratix10_svc_command_code {
type streamid_type (line 64470) | enum streamid_type {
type streamid_vlan_tagged (line 64476) | enum streamid_vlan_tagged {
type string_size_units (line 64483) | enum string_size_units {
type stripetype4 (line 64491) | enum stripetype4 {
type sum_check_bits (line 64496) | enum sum_check_bits {
type sum_check_flags (line 64501) | enum sum_check_flags {
type sunxi_desc_bias_voltage (line 64506) | enum sunxi_desc_bias_voltage {
type support_mode (line 64513) | enum support_mode {
type suspend_stat_step (line 64518) | enum suspend_stat_step {
type svc_auth_status (line 64530) | enum svc_auth_status {
type sw_activity (line 64543) | enum sw_activity {
type swap_cluster_flags (line 64549) | enum swap_cluster_flags {
type switchdev_attr_id (line 64560) | enum switchdev_attr_id {
type switchdev_notifier_type (line 64577) | enum switchdev_notifier_type {
type switchdev_obj_id (line 64597) | enum switchdev_obj_id {
type swxilim_bits (line 64611) | enum swxilim_bits {
type synaptics_pkt_type (line 64618) | enum synaptics_pkt_type {
type sys_off_mode (line 64625) | enum sys_off_mode {
type sys_powerdown (line 64632) | enum sys_powerdown {
type sysc_clocks (line 64639) | enum sysc_clocks {
type sysc_registers (line 64653) | enum sysc_registers {
type sysc_soc (line 64660) | enum sysc_soc {
type sysctl_writes_mode (line 64676) | enum sysctl_writes_mode {
type system_states (line 64682) | enum system_states {
type t10_dif_type (line 64693) | enum t10_dif_type {
type ta_cmd (line 64700) | enum ta_cmd {
type tap_delay_type (line 64705) | enum tap_delay_type {
type task_attribute (line 64710) | enum task_attribute {
type task_disposition (line 64717) | enum task_disposition {
type task_work_notify_mode (line 64725) | enum task_work_notify_mode {
type tc_fifo_command (line 64733) | enum tc_fifo_command {
type tc_link_layer (line 64739) | enum tc_link_layer {
type tc_mq_command (line 64745) | enum tc_mq_command {
type tc_root_command (line 64752) | enum tc_root_command {
type tc_setup_type (line 64756) | enum tc_setup_type {
type tc_taprio_qopt_cmd (line 64780) | enum tc_taprio_qopt_cmd {
type tc_tbf_command (line 64787) | enum tc_tbf_command {
type tca_id (line 64794) | enum tca_id {
type tcf_proto_ops_flags (line 64820) | enum tcf_proto_ops_flags {
type tcp_ca_ack_event_flags (line 64824) | enum tcp_ca_ack_event_flags {
type tcp_ca_event (line 64830) | enum tcp_ca_event {
type tcp_ca_state (line 64839) | enum tcp_ca_state {
type tcp_chrono (line 64847) | enum tcp_chrono {
type tcp_conntrack (line 64855) | enum tcp_conntrack {
type tcp_fastopen_client_fail (line 64873) | enum tcp_fastopen_client_fail {
type tcp_metric_index (line 64880) | enum tcp_metric_index {
type tcp_queue (line 64891) | enum tcp_queue {
type tcp_seq_states (line 64896) | enum tcp_seq_states {
type tcp_skb_cb_sacked_flags (line 64901) | enum tcp_skb_cb_sacked_flags {
type tcp_synack_type (line 64911) | enum tcp_synack_type {
type tcp_tw_status (line 64917) | enum tcp_tw_status {
type tcpa_event_types (line 64924) | enum tcpa_event_types {
type tcpa_pc_event_ids (line 64945) | enum tcpa_pc_event_ids {
type tcx_action_base (line 64961) | enum tcx_action_base {
type tegra124_function (line 64968) | enum tegra124_function {
type tegra234_cbb_fabric_ids (line 64978) | enum tegra234_cbb_fabric_ids {
type tegra_dfll_pmu_if (line 64990) | enum tegra_dfll_pmu_if {
type tegra_hte_type (line 64995) | enum tegra_hte_type {
type tegra_icc_client_type (line 65000) | enum tegra_icc_client_type {
type tegra_io_pad (line 65009) | enum tegra_io_pad {
type tegra_ivc_state (line 65091) | enum tegra_ivc_state {
type tegra_mux (line 65097) | enum tegra_mux {
type tegra_mux___2 (line 65173) | enum tegra_mux___2 {
type tegra_mux_dt (line 65262) | enum tegra_mux_dt {
type tegra_mux_dt___2 (line 65348) | enum tegra_mux_dt___2 {
type tegra_pinconf_param (line 65441) | enum tegra_pinconf_param {
type tegra_platform (line 65459) | enum tegra_platform {
type tegra_revision (line 65473) | enum tegra_revision {
type tegra_super_gen (line 65483) | enum tegra_super_gen {
type tegra_suspend_mode (line 65488) | enum tegra_suspend_mode {
type tegra_usb_phy_port_speed (line 65497) | enum tegra_usb_phy_port_speed {
type tegra_xusb_mbox_cmd (line 65503) | enum tegra_xusb_mbox_cmd {
type tegra_xusb_padctl_param (line 65527) | enum tegra_xusb_padctl_param {
type thermal_device_mode (line 65531) | enum thermal_device_mode {
type thermal_notify_event (line 65536) | enum thermal_notify_event {
type thermal_trend (line 65555) | enum thermal_trend {
type thermal_trip_type (line 65561) | enum thermal_trip_type {
type ti_sysc_module_type (line 65568) | enum ti_sysc_module_type {
type tick_broadcast_mode (line 65585) | enum tick_broadcast_mode {
type tick_broadcast_state (line 65591) | enum tick_broadcast_state {
type tick_dep_bits (line 65596) | enum tick_dep_bits {
type tick_device_mode (line 65605) | enum tick_device_mode {
type timekeeping_adv_mode (line 65610) | enum timekeeping_adv_mode {
type timer_tread_format (line 65615) | enum timer_tread_format {
type timespec_type (line 65621) | enum timespec_type {
type tis_access (line 65627) | enum tis_access {
type tis_defaults (line 65634) | enum tis_defaults {
type tis_status (line 65639) | enum tis_status {
type tk_offsets (line 65647) | enum tk_offsets {
type tlb_flush_reason (line 65654) | enum tlb_flush_reason {
type topology_type (line 65664) | enum topology_type {
type tp_func_state (line 65674) | enum tp_func_state {
type tp_transition_sync (line 65681) | enum tp_transition_sync {
type tpacket_versions (line 65687) | enum tpacket_versions {
type tpm2_capabilities (line 65693) | enum tpm2_capabilities {
type tpm2_cc_attrs (line 65700) | enum tpm2_cc_attrs {
type tpm2_command_codes (line 65706) | enum tpm2_command_codes {
type tpm2_const (line 65736) | enum tpm2_const {
type tpm2_handle_types (line 65741) | enum tpm2_handle_types {
type tpm2_permanent_handles (line 65747) | enum tpm2_permanent_handles {
type tpm2_properties (line 65752) | enum tpm2_properties {
type tpm2_return_codes (line 65756) | enum tpm2_return_codes {
type tpm2_session_attributes (line 65771) | enum tpm2_session_attributes {
type tpm2_startup_types (line 65780) | enum tpm2_startup_types {
type tpm2_structures (line 65785) | enum tpm2_structures {
type tpm2_timeouts (line 65791) | enum tpm2_timeouts {
type tpm_algorithms (line 65803) | enum tpm_algorithms {
type tpm_buf_flags (line 65817) | enum tpm_buf_flags {
type tpm_capabilities (line 65823) | enum tpm_capabilities {
type tpm_chip_flags (line 65830) | enum tpm_chip_flags {
type tpm_duration (line 65844) | enum tpm_duration {
type tpm_sub_capabilities (line 65853) | enum tpm_sub_capabilities {
type tpm_timeout (line 65863) | enum tpm_timeout {
type tps65219_regulator_id (line 65872) | enum tps65219_regulator_id {
type trace_flag_type (line 65882) | enum trace_flag_type {
type trace_iter_flags (line 65893) | enum trace_iter_flags {
type trace_iterator_bits (line 65899) | enum trace_iterator_bits {
type trace_iterator_flags (line 65930) | enum trace_iterator_flags {
type trace_reg (line 65960) | enum trace_reg {
type trace_type (line 65971) | enum trace_type {
type track_item (line 65996) | enum track_item {
type trans_regime (line 66001) | enum trans_regime {
type translation_map (line 66007) | enum translation_map {
type transparent_hugepage_flag (line 66016) | enum transparent_hugepage_flag {
type trap_behaviour (line 66028) | enum trap_behaviour {
type tre_type (line 66036) | enum tre_type {
type tsens_irq_type (line 66041) | enum tsens_irq_type {
type tsens_ver (line 66047) | enum tsens_ver {
type tsq_enum (line 66054) | enum tsq_enum {
type tsq_flags (line 66064) | enum tsq_flags {
type ttu_flags (line 66074) | enum ttu_flags {
type tty_flow_change (line 66083) | enum tty_flow_change {
type tunable_id (line 66089) | enum tunable_id {
type tunable_type_id (line 66098) | enum tunable_type_id {
type tx_queue_prio (line 66111) | enum tx_queue_prio {
type tx_stats_reg_offset (line 66116) | enum tx_stats_reg_offset {
type txtime_flags (line 66125) | enum txtime_flags {
type u2_phy_params (line 66132) | enum u2_phy_params {
type u3_phy_params (line 66141) | enum u3_phy_params {
type uart_pm_state (line 66148) | enum uart_pm_state {
type uclamp_id (line 66154) | enum uclamp_id {
type ucount_type (line 66160) | enum ucount_type {
type udma_chan_state (line 66176) | enum udma_chan_state {
type udma_mmr (line 66182) | enum udma_mmr {
type udma_rm_range (line 66190) | enum udma_rm_range {
type udma_tp_level (line 66199) | enum udma_tp_level {
type udp_conntrack (line 66206) | enum udp_conntrack {
type udp_parsable_tunnel_type (line 66212) | enum udp_parsable_tunnel_type {
type udp_tunnel_nic_info_flags (line 66218) | enum udp_tunnel_nic_info_flags {
type ufs_bsg_msg_code (line 66225) | enum ufs_bsg_msg_code {
type ufs_dev_pwr_mode (line 66230) | enum ufs_dev_pwr_mode {
type ufs_event_type (line 66237) | enum ufs_event_type {
type ufs_hs_gear_rate (line 66256) | enum ufs_hs_gear_rate {
type ufs_hs_gear_tag (line 66261) | enum ufs_hs_gear_tag {
type ufs_lanes (line 66270) | enum ufs_lanes {
type ufs_lu_wp_type (line 66276) | enum ufs_lu_wp_type {
type ufs_notify_change_status (line 66282) | enum ufs_notify_change_status {
type ufs_pa_pwr_mode (line 66287) | enum ufs_pa_pwr_mode {
type ufs_pm_level (line 66295) | enum ufs_pm_level {
type ufs_pm_op (line 66306) | enum ufs_pm_op {
type ufs_pwm_gear_tag (line 66312) | enum ufs_pwm_gear_tag {
type ufs_ref_clk_freq (line 66323) | enum ufs_ref_clk_freq {
type ufs_rpmb_op_type (line 66331) | enum ufs_rpmb_op_type {
type ufs_rtc_time (line 66343) | enum ufs_rtc_time {
type ufs_trace_str_t (line 66348) | enum ufs_trace_str_t {
type ufs_trace_tsf_t (line 66360) | enum ufs_trace_tsf_t {
type ufshcd_caps (line 66367) | enum ufshcd_caps {
type ufshcd_mcq_opr (line 66383) | enum ufshcd_mcq_opr {
type ufshcd_quirks (line 66391) | enum ufshcd_quirks {
type ufshcd_res (line 66418) | enum ufshcd_res {
type ufshcd_state (line 66429) | enum ufshcd_state {
type uic_cmd_dme (line 66437) | enum uic_cmd_dme {
type uic_link_state (line 66453) | enum uic_link_state {
type umh_disable_depth (line 66460) | enum umh_disable_depth {
type umount_tree_flags (line 66466) | enum umount_tree_flags {
type uniphier_clk_type (line 66472) | enum uniphier_clk_type {
type uniphier_pin_drv_type (line 66480) | enum uniphier_pin_drv_type {
type uniphier_pin_pull_dir (line 66490) | enum uniphier_pin_pull_dir {
type unit_desc_param (line 66498) | enum unit_desc_param {
type unix_vertex_index (line 66522) | enum unix_vertex_index {
type upiu_request_transaction (line 66528) | enum upiu_request_transaction {
type upiu_response_transaction (line 66536) | enum upiu_response_transaction {
type uprobe_task_state (line 66546) | enum uprobe_task_state {
type usb3503_mode (line 66553) | enum usb3503_mode {
type usb3_link_state (line 66560) | enum usb3_link_state {
type usb_charger_state (line 66567) | enum usb_charger_state {
type usb_charger_type (line 66573) | enum usb_charger_type {
type usb_chg_state (line 66581) | enum usb_chg_state {
type usb_chg_type (line 66590) | enum usb_chg_type {
type usb_data_roles (line 66604) | enum usb_data_roles {
type usb_dev_authorize_policy (line 66610) | enum usb_dev_authorize_policy {
type usb_device_speed (line 66616) | enum usb_device_speed {
type usb_device_state (line 66626) | enum usb_device_state {
type usb_dr_mode (line 66638) | enum usb_dr_mode {
type usb_interface_condition (line 66645) | enum usb_interface_condition {
type usb_led_event (line 66652) | enum usb_led_event {
type usb_link_tunnel_mode (line 66657) | enum usb_link_tunnel_mode {
type usb_otg_state (line 66663) | enum usb_otg_state {
type usb_pd_control_mux (line 66680) | enum usb_pd_control_mux {
type usb_pd_control_role (line 66690) | enum usb_pd_control_role {
type usb_pd_control_swap (line 66700) | enum usb_pd_control_swap {
type usb_phy_events (line 66708) | enum usb_phy_events {
type usb_phy_interface (line 66716) | enum usb_phy_interface {
type usb_phy_type (line 66725) | enum usb_phy_type {
type usb_port_connect_type (line 66731) | enum usb_port_connect_type {
type usb_role (line 66738) | enum usb_role {
type usb_ssp_rate (line 66744) | enum usb_ssp_rate {
type usb_wireless_status (line 66751) | enum usb_wireless_status {
type utf16_endian (line 66757) | enum utf16_endian {
type utf8_normalization (line 66763) | enum utf8_normalization {
type utp_data_direction (line 66769) | enum utp_data_direction {
type utp_ocs (line 66775) | enum utp_ocs {
type uts_proc (line 66790) | enum uts_proc {
type v4l2_av1_segment_feature (line 66799) | enum v4l2_av1_segment_feature {
type v4l2_fwnode_bus_type (line 66808) | enum v4l2_fwnode_bus_type {
type v4l2_preemphasis (line 66820) | enum v4l2_preemphasis {
type vc3_clk (line 66826) | enum vc3_clk {
type vc3_clk_mux (line 66835) | enum vc3_clk_mux {
type vc3_div (line 66843) | enum vc3_div {
type vc3_div_mux (line 66851) | enum vc3_div_mux {
type vc3_pfd (line 66857) | enum vc3_pfd {
type vc3_pfd_mux (line 66863) | enum vc3_pfd_mux {
type vc3_pll (line 66868) | enum vc3_pll {
type vc5_model (line 66874) | enum vc5_model {
type vc_ctl_state (line 66885) | enum vc_ctl_state {
type vc_intensity (line 66906) | enum vc_intensity {
type vco_freq_range (line 66913) | enum vco_freq_range {
type vcpu_sysreg (line 66921) | enum vcpu_sysreg {
type vdso_abi (line 67136) | enum vdso_abi {
type vdso_clock_mode (line 67141) | enum vdso_clock_mode {
type vec_type (line 67149) | enum vec_type {
type verifier_phase (line 67155) | enum verifier_phase {
type vesa_blank_mode (line 67160) | enum vesa_blank_mode {
type vfio_device_mig_state (line 67168) | enum vfio_device_mig_state {
type vfio_group_type (line 67180) | enum vfio_group_type {
type vgic_irq_config (line 67186) | enum vgic_irq_config {
type vgic_type (line 67191) | enum vgic_type {
type virtio_balloon_config_read (line 67196) | enum virtio_balloon_config_read {
type virtio_balloon_vq (line 67200) | enum virtio_balloon_vq {
type virtnet_xmit_type (line 67209) | enum virtnet_xmit_type {
type visit_state (line 67216) | enum visit_state {
type vlan_flags (line 67222) | enum vlan_flags {
type vlan_protos (line 67230) | enum vlan_protos {
type vm_event_item (line 67236) | enum vm_event_item {
type vm_fault_reason (line 67348) | enum vm_fault_reason {
type vm_stat_item (line 67365) | enum vm_stat_item {
type vma_merge_flags (line 67373) | enum vma_merge_flags {
type vma_merge_state (line 67378) | enum vma_merge_state {
type vma_resv_mode (line 67385) | enum vma_resv_mode {
type vmpressure_levels (line 67393) | enum vmpressure_levels {
type vmpressure_modes (line 67400) | enum vmpressure_modes {
type vmscan_throttle_state (line 67407) | enum vmscan_throttle_state {
type voltage_change_dir (line 67415) | enum voltage_change_dir {
type vp_vq_vector_policy (line 67421) | enum vp_vq_vector_policy {
type vsc85xx_global_phy (line 67427) | enum vsc85xx_global_phy {
type vvar_pages (line 67431) | enum vvar_pages {
type wb_reason (line 67437) | enum wb_reason {
type wb_stat_item (line 67449) | enum wb_stat_item {
type wb_state (line 67457) | enum wb_state {
type why_no_delegation4 (line 67464) | enum why_no_delegation4 {
type work_bits (line 67476) | enum work_bits {
type work_cancel_flags (line 67496) | enum work_cancel_flags {
type work_flags (line 67501) | enum work_flags {
type worker_flags (line 67509) | enum worker_flags {
type worker_pool_flags (line 67519) | enum worker_pool_flags {
type wp_types (line 67526) | enum wp_types {
type wq_affn_scope (line 67532) | enum wq_affn_scope {
type wq_consts (line 67542) | enum wq_consts {
type wq_flags (line 67549) | enum wq_flags {
type wq_internal_consts (line 67565) | enum wq_internal_consts {
type wq_misc_consts (line 67580) | enum wq_misc_consts {
type writeback_sync_modes (line 67588) | enum writeback_sync_modes {
type x1e80100_functions (line 67593) | enum x1e80100_functions {
type x509_actions (line 67748) | enum x509_actions {
type x509_akid_actions (line 67765) | enum x509_akid_actions {
type xa_lock_type (line 67774) | enum xa_lock_type {
type xb_req_state (line 67779) | enum xb_req_state {
type xdp_action (line 67786) | enum xdp_action {
type xdp_buff_flags (line 67794) | enum xdp_buff_flags {
type xdp_mem_type (line 67799) | enum xdp_mem_type {
type xdp_rss_hash_type (line 67807) | enum xdp_rss_hash_type {
type xdp_rx_metadata (line 67839) | enum xdp_rx_metadata {
type xen_domain_type (line 67846) | enum xen_domain_type {
type xen_irq_type (line 67852) | enum xen_irq_type {
type xenbus_state (line 67860) | enum xenbus_state {
type xenon_phy_type_enum (line 67872) | enum xenon_phy_type_enum {
type xenon_variant (line 67878) | enum xenon_variant {
type xenstore_init (line 67886) | enum xenstore_init {
type xfer_buf_dir (line 67893) | enum xfer_buf_dir {
type xfrm_attr_type_t (line 67898) | enum xfrm_attr_type_t {
type xfrm_replay_mode (line 67944) | enum xfrm_replay_mode {
type xgbe_an (line 67950) | enum xgbe_an {
type xgbe_an_mode (line 67959) | enum xgbe_an_mode {
type xgbe_conn_type (line 67967) | enum xgbe_conn_type {
type xgbe_ecc_sec (line 67976) | enum xgbe_ecc_sec {
type xgbe_i2c_cmd (line 67982) | enum xgbe_i2c_cmd {
type xgbe_int (line 67987) | enum xgbe_int {
type xgbe_mb_cmd (line 67999) | enum xgbe_mb_cmd {
type xgbe_mb_subcmd (line 68008) | enum xgbe_mb_subcmd {
type xgbe_mdio_mode (line 68021) | enum xgbe_mdio_mode {
type xgbe_mdio_reset (line 68027) | enum xgbe_mdio_reset {
type xgbe_mode (line 68034) | enum xgbe_mode {
type xgbe_phy_redrv_if (line 68046) | enum xgbe_phy_redrv_if {
type xgbe_phy_redrv_mode (line 68052) | enum xgbe_phy_redrv_mode {
type xgbe_phy_redrv_model (line 68057) | enum xgbe_phy_redrv_model {
type xgbe_port_mode (line 68063) | enum xgbe_port_mode {
type xgbe_rx (line 68077) | enum xgbe_rx {
type xgbe_sfp_base (line 68084) | enum xgbe_sfp_base {
type xgbe_sfp_cable (line 68097) | enum xgbe_sfp_cable {
type xgbe_sfp_comm (line 68104) | enum xgbe_sfp_comm {
type xgbe_sfp_speed (line 68109) | enum xgbe_sfp_speed {
type xgbe_speed (line 68116) | enum xgbe_speed {
type xgbe_speedset (line 68123) | enum xgbe_speedset {
type xgbe_state (line 68128) | enum xgbe_state {
type xgbe_xpcs_access (line 68135) | enum xgbe_xpcs_access {
type xgene_ahci_version (line 68140) | enum xgene_ahci_version {
type xgene_cle_byte_store (line 68145) | enum xgene_cle_byte_store {
type xgene_cle_cmd_type (line 68152) | enum xgene_cle_cmd_type {
type xgene_cle_dram_type (line 68160) | enum xgene_cle_dram_type {
type xgene_cle_ipv4_rss_hashtype (line 68169) | enum xgene_cle_ipv4_rss_hashtype {
type xgene_cle_node_type (line 68174) | enum xgene_cle_node_type {
type xgene_cle_op_type (line 68181) | enum xgene_cle_op_type {
type xgene_cle_parser (line 68190) | enum xgene_cle_parser {
type xgene_cle_prot_type (line 68197) | enum xgene_cle_prot_type {
type xgene_cle_prot_version (line 68204) | enum xgene_cle_prot_version {
type xgene_cle_ptree_dbptrs (line 68208) | enum xgene_cle_ptree_dbptrs {
type xgene_cle_ptree_nodes (line 68215) | enum xgene_cle_ptree_nodes {
type xgene_enet_buf_len (line 68225) | enum xgene_enet_buf_len {
type xgene_enet_cmd (line 68231) | enum xgene_enet_cmd {
type xgene_enet_err_code (line 68236) | enum xgene_enet_err_code {
type xgene_enet_id (line 68251) | enum xgene_enet_id {
type xgene_enet_ring_bufnum (line 68256) | enum xgene_enet_ring_bufnum {
type xgene_enet_ring_cfgsize (line 68262) | enum xgene_enet_ring_cfgsize {
type xgene_enet_ring_type (line 68271) | enum xgene_enet_ring_type {
type xgene_enet_rm (line 68277) | enum xgene_enet_rm {
type xgene_mdio_id (line 68283) | enum xgene_mdio_id {
type xgene_phy_mode (line 68288) | enum xgene_phy_mode {
type xgene_phy_speed (line 68297) | enum xgene_phy_speed {
type xgene_pll_type (line 68303) | enum xgene_pll_type {
type xgene_ring_owner (line 68308) | enum xgene_ring_owner {
type xhci_cancelled_td_status (line 68315) | enum xhci_cancelled_td_status {
type xhci_ep_reset_type (line 68323) | enum xhci_ep_reset_type {
type xhci_overhead_type (line 68328) | enum xhci_overhead_type {
type xhci_ring_type (line 68334) | enum xhci_ring_type {
type xhci_setup_dev (line 68344) | enum xhci_setup_dev {
type xprt_transports (line 68349) | enum xprt_transports {
type xprt_xid_rb_cmp (line 68359) | enum xprt_xid_rb_cmp {
type xprtsec_policies (line 68365) | enum xprtsec_policies {
type xps_map_type (line 68371) | enum xps_map_type {
type xsd_sockmsg_type (line 68377) | enum xsd_sockmsg_type {
type xz_check (line 68404) | enum xz_check {
type xz_mode (line 68411) | enum xz_mode {
type xz_ret (line 68417) | enum xz_ret {
type yukon_ec_rev (line 68429) | enum yukon_ec_rev {
type yukon_ec_u_rev (line 68435) | enum yukon_ec_u_rev {
type yukon_ex_rev (line 68442) | enum yukon_ex_rev {
type yukon_fe_p_rev (line 68447) | enum yukon_fe_p_rev {
type yukon_prm_rev (line 68451) | enum yukon_prm_rev {
type yukon_supr_rev (line 68456) | enum yukon_supr_rev {
type yukon_xl_rev (line 68462) | enum yukon_xl_rev {
type zone_flags (line 68469) | enum zone_flags {
type zone_stat_item (line 68475) | enum zone_stat_item {
type zone_type (line 68490) | enum zone_type {
type zone_watermarks (line 68498) | enum zone_watermarks {
type zynqmp_pm_request_ack (line 68506) | enum zynqmp_pm_request_ack {
type zynqmp_pm_reset (line 68512) | enum zynqmp_pm_reset {
type zynqmp_pm_reset_action (line 68637) | enum zynqmp_pm_reset_action {
type zynqmp_pm_shutdown_subtype (line 68643) | enum zynqmp_pm_shutdown_subtype {
type zynqmp_pm_shutdown_type (line 68649) | enum zynqmp_pm_shutdown_type {
type zynqmp_pm_suspend_reason (line 68655) | enum zynqmp_pm_suspend_reason {
type _Bool (line 68661) | typedef _Bool bool;
type __u128 (line 68663) | typedef __int128 unsigned __u128;
type __u128 (line 68665) | typedef __u128 u128;
type u128 (line 68667) | typedef u128 freelist_full_t;
type freelist_full_t (line 68669) | typedef freelist_full_t pcp_op_T__;
type __kernel_clockid_t (line 68687) | typedef int __kernel_clockid_t;
type __kernel_daddr_t (line 68689) | typedef int __kernel_daddr_t;
type __kernel_ipc_pid_t (line 68691) | typedef int __kernel_ipc_pid_t;
type __kernel_key_t (line 68693) | typedef int __kernel_key_t;
type __kernel_mqd_t (line 68695) | typedef int __kernel_mqd_t;
type __kernel_pid_t (line 68697) | typedef int __kernel_pid_t;
type __kernel_rwf_t (line 68699) | typedef int __kernel_rwf_t;
type __kernel_timer_t (line 68701) | typedef int __kernel_timer_t;
type __s32 (line 68703) | typedef int __s32;
type class_get_unused_fd_t (line 68705) | typedef int class_get_unused_fd_t;
type __kernel_clockid_t (line 68707) | typedef __kernel_clockid_t clockid_t;
type __s32 (line 68709) | typedef __s32 s32;
type s32 (line 68711) | typedef s32 compat_clock_t;
type s32 (line 68713) | typedef s32 compat_daddr_t;
type s32 (line 68715) | typedef s32 compat_int_t;
type s32 (line 68717) | typedef s32 compat_key_t;
type s32 (line 68719) | typedef s32 compat_long_t;
type s32 (line 68721) | typedef s32 compat_off_t;
type s32 (line 68723) | typedef s32 compat_pid_t;
type s32 (line 68725) | typedef s32 compat_ssize_t;
type s32 (line 68727) | typedef s32 compat_timer_t;
type cydp_t (line 68729) | typedef int cydp_t;
type s32 (line 68731) | typedef s32 dma_cookie_t;
type ext4_grpblk_t (line 68733) | typedef int ext4_grpblk_t;
type folio_walk_flags_t (line 68735) | typedef int folio_walk_flags_t;
type fpb_t (line 68737) | typedef int fpb_t;
type fpi_t (line 68739) | typedef int fpi_t;
type initcall_entry_t (line 68741) | typedef int initcall_entry_t;
type s32 (line 68743) | typedef s32 int32_t;
type key_serial_t (line 68745) | typedef int32_t key_serial_t;
type __kernel_key_t (line 68747) | typedef __kernel_key_t key_t;
type kprobe_opcode_t (line 68749) | typedef int kprobe_opcode_t;
type mhp_t (line 68751) | typedef int mhp_t;
type mpi_size_t (line 68753) | typedef int mpi_size_t;
type __kernel_mqd_t (line 68755) | typedef __kernel_mqd_t mqd_t;
type s32 (line 68757) | typedef s32 old_time32_t;
type pci_power_t (line 68759) | typedef int pci_power_t;
type __kernel_pid_t (line 68761) | typedef __kernel_pid_t pid_t;
type rmap_t (line 68763) | typedef int rmap_t;
type __kernel_rwf_t (line 68765) | typedef __kernel_rwf_t rwf_t;
type snd_ctl_elem_iface_t (line 68767) | typedef int snd_ctl_elem_iface_t;
type snd_ctl_elem_type_t (line 68769) | typedef int snd_ctl_elem_type_t;
type snd_pcm_access_t (line 68771) | typedef int snd_pcm_access_t;
type snd_pcm_format_t (line 68773) | typedef int snd_pcm_format_t;
type snd_pcm_hw_param_t (line 68775) | typedef int snd_pcm_hw_param_t;
type snd_pcm_state_t (line 68777) | typedef int snd_pcm_state_t;
type snd_pcm_subformat_t (line 68779) | typedef int snd_pcm_subformat_t;
type suspend_state_t (line 68781) | typedef int suspend_state_t;
type __kernel_timer_t (line 68783) | typedef __kernel_timer_t timer_t;
type tracepoint_ptr_t (line 68785) | typedef const int tracepoint_ptr_t;
type __kernel_long_t (line 68787) | typedef long int __kernel_long_t;
type __kernel_long_t (line 68789) | typedef __kernel_long_t __kernel_clock_t;
type __kernel_long_t (line 68791) | typedef __kernel_long_t __kernel_off_t;
type __kernel_long_t (line 68793) | typedef __kernel_long_t __kernel_old_time_t;
type __kernel_long_t (line 68795) | typedef __kernel_long_t __kernel_ptrdiff_t;
type __kernel_long_t (line 68797) | typedef __kernel_long_t __kernel_ssize_t;
type __kernel_long_t (line 68799) | typedef __kernel_long_t __kernel_suseconds_t;
type __kernel_clock_t (line 68801) | typedef __kernel_clock_t clock_t;
type mpi_limb_signed_t (line 68805) | typedef long int mpi_limb_signed_t;
type __kernel_off_t (line 68807) | typedef __kernel_off_t off_t;
type prel64_t (line 68809) | typedef volatile long int prel64_t;
type __kernel_ptrdiff_t (line 68811) | typedef __kernel_ptrdiff_t ptrdiff_t;
type snd_pcm_sframes_t (line 68813) | typedef long int snd_pcm_sframes_t;
type __kernel_ssize_t (line 68815) | typedef __kernel_ssize_t ssize_t;
type __kernel_suseconds_t (line 68817) | typedef __kernel_suseconds_t suseconds_t;
type __s64 (line 68819) | typedef long long int __s64;
type __s64 (line 68821) | typedef __s64 Elf64_Sxword;
type __kernel_loff_t (line 68823) | typedef long long int __kernel_loff_t;
type __kernel_time64_t (line 68825) | typedef long long int __kernel_time64_t;
type __s64 (line 68827) | typedef __s64 s64;
type s64 (line 68829) | typedef s64 compat_loff_t;
type s64 (line 68831) | typedef s64 compat_s64;
type s64 (line 68833) | typedef s64 int64_t;
type s64 (line 68835) | typedef s64 ktime_t;
type __kernel_loff_t (line 68837) | typedef __kernel_loff_t loff_t;
type qsize_t (line 68839) | typedef long long int qsize_t;
type __s64 (line 68841) | typedef __s64 time64_t;
type xen_long_t (line 68843) | typedef int64_t xen_long_t;
type __u64 (line 68845) | typedef long long unsigned int __u64;
type __u64 (line 68847) | typedef __u64 Elf64_Addr;
type __u64 (line 68849) | typedef __u64 Elf64_Off;
type __u64 (line 68851) | typedef __u64 Elf64_Xword;
type __u64 (line 68853) | typedef __u64 u64;
type u64 (line 68855) | typedef u64 uint64_t;
type U64 (line 68857) | typedef uint64_t U64;
type __u64 (line 68859) | typedef __u64 __addrpair;
type __u64 (line 68861) | typedef __u64 __be64;
type __u64 (line 68863) | typedef __u64 __le64;
type __u64 (line 68865) | typedef __u64 __virtio64;
type u64 (line 68867) | typedef u64 acpi_bus_address;
type u64 (line 68869) | typedef u64 acpi_integer;
type u64 (line 68871) | typedef u64 acpi_io_address;
type u64 (line 68873) | typedef u64 acpi_physical_address;
type u64 (line 68875) | typedef u64 acpi_size;
type u64 (line 68877) | typedef u64 arm_lpae_iopte;
type u64 (line 68879) | typedef u64 async_cookie_t;
type __u64 (line 68881) | typedef __u64 blist_flags_t;
type u64 (line 68883) | typedef u64 blkcnt_t;
type blkif_sector_t (line 68885) | typedef uint64_t blkif_sector_t;
type u64 (line 68887) | typedef u64 clientid4;
type u64 (line 68889) | typedef u64 compat_u64;
type u64 (line 68891) | typedef u64 dart_iopte;
type u64 (line 68893) | typedef u64 dma_addr_t;
type u64 (line 68895) | typedef u64 efi_physical_addr_t;
type ext4_fsblk_t (line 68897) | typedef long long unsigned int ext4_fsblk_t;
type __be64 (line 68899) | typedef __be64 fdt64_t;
type u64 (line 68901) | typedef u64 gfn_t;
type u64 (line 68903) | typedef u64 gpa_t;
type u64 (line 68905) | typedef u64 hfn_t;
type u64 (line 68907) | typedef u64 hpa_t;
type u64 (line 68909) | typedef u64 io_req_flags_t;
type hfn_t (line 68911) | typedef hfn_t kvm_pfn_t;
type u64 (line 68913) | typedef u64 kvm_pte_t;
type kvm_pte_t (line 68915) | typedef kvm_pte_t *kvm_pteref_t;
type llu (line 68917) | typedef long long unsigned int llu;
type u64 (line 68919) | typedef u64 netdev_features_t;
type u64 (line 68921) | typedef u64 p4dval_t;
type u64 (line 68923) | typedef u64 pci_bus_addr_t;
type u64 (line 68925) | typedef u64 pgdval_t;
type u64 (line 68927) | typedef u64 phys_addr_t;
type u64 (line 68929) | typedef u64 phys_cpuid_t;
type u64 (line 68931) | typedef u64 pmdval_t;
type u64 (line 68933) | typedef u64 pteval_t;
type u64 (line 68935) | typedef u64 pudval_t;
type phys_addr_t (line 68937) | typedef phys_addr_t resource_size_t;
type u64 (line 68939) | typedef u64 sci_t;
type u64 (line 68941) | typedef u64 sector_t;
type __u64 (line 68943) | typedef __u64 timeu64_t;
type u64 (line 68945) | typedef u64 u_int64_t;
type u64 (line 68947) | typedef u64 upf_t;
type vli_type (line 68949) | typedef uint64_t vli_type;
type xen_pfn_t (line 68951) | typedef uint64_t xen_pfn_t;
type xen_ulong_t (line 68953) | typedef uint64_t xen_ulong_t;
type mpi_limb_t (line 68955) | typedef long unsigned int mpi_limb_t;
type mpi_limb_t (line 68957) | typedef mpi_limb_t UWtype;
type __kernel_ulong_t (line 68959) | typedef long unsigned int __kernel_ulong_t;
type __kernel_ulong_t (line 68961) | typedef __kernel_ulong_t __kernel_size_t;
type __kernel_ulong_t (line 68963) | typedef __kernel_ulong_t aio_context_t;
type cycles_t (line 68965) | typedef long unsigned int cycles_t;
type dax_entry_t (line 68967) | typedef long unsigned int dax_entry_t;
type efi_status_t (line 68969) | typedef long unsigned int efi_status_t;
type elf_greg_t (line 68971) | typedef long unsigned int elf_greg_t;
type elf_greg_t (line 68973) | typedef elf_greg_t elf_gregset_t[34];
type hva_t (line 68975) | typedef long unsigned int hva_t;
type __kernel_ulong_t (line 68977) | typedef __kernel_ulong_t ino_t;
type irq_hw_number_t (line 68979) | typedef long unsigned int irq_hw_number_t;
type kernel_ulong_t (line 68981) | typedef long unsigned int kernel_ulong_t;
type kimage_entry_t (line 68983) | typedef long unsigned int kimage_entry_t;
type mpi_limb_t (line 68985) | typedef mpi_limb_t *mpi_ptr_t;
type netmem_ref (line 68987) | typedef long unsigned int netmem_ref;
type old_sigset_t (line 68989) | typedef long unsigned int old_sigset_t;
type pte_marker (line 68993) | typedef long unsigned int pte_marker;
type __kernel_size_t (line 68995) | typedef __kernel_size_t size_t;
type snd_pcm_uframes_t (line 68997) | typedef long unsigned int snd_pcm_uframes_t;
type uLong (line 68999) | typedef long unsigned int uLong;
type u_long (line 69001) | typedef long unsigned int u_long;
type ulg (line 69005) | typedef long unsigned int ulg;
type ulong (line 69007) | typedef long unsigned int ulong;
type uptrval (line 69009) | typedef uintptr_t uptrval;
type vm_flags_t (line 69011) | typedef long unsigned int vm_flags_t;
type __s16 (line 69013) | typedef short int __s16;
type __s16 (line 69015) | typedef __s16 s16;
type s16 (line 69017) | typedef s16 int16_t;
type S16 (line 69019) | typedef int16_t S16;
type __u16 (line 69021) | typedef short unsigned int __u16;
type __u16 (line 69023) | typedef __u16 Elf32_Half;
type __u16 (line 69025) | typedef __u16 Elf64_Half;
type ush (line 69027) | typedef short unsigned int ush;
type ush (line 69029) | typedef ush Pos;
type __u16 (line 69031) | typedef __u16 u16;
type u16 (line 69033) | typedef u16 uint16_t;
type U16 (line 69035) | typedef uint16_t U16;
type __u16 (line 69037) | typedef __u16 __be16;
type u16 (line 69039) | typedef u16 __compat_gid16_t;
type u16 (line 69041) | typedef u16 __compat_gid_t;
type u16 (line 69043) | typedef u16 __compat_uid16_t;
type u16 (line 69045) | typedef u16 __compat_uid_t;
type __u16 (line 69047) | typedef __u16 __hc16;
type __kernel_gid16_t (line 69049) | typedef short unsigned int __kernel_gid16_t;
type __kernel_old_gid_t (line 69051) | typedef short unsigned int __kernel_old_gid_t;
type __kernel_old_uid_t (line 69053) | typedef short unsigned int __kernel_old_uid_t;
type __kernel_sa_family_t (line 69055) | typedef short unsigned int __kernel_sa_family_t;
type __kernel_uid16_t (line 69057) | typedef short unsigned int __kernel_uid16_t;
type __u16 (line 69059) | typedef __u16 __le16;
type __u16 (line 69061) | typedef __u16 __rpmsg16;
type __u16 (line 69063) | typedef __u16 __sum16;
type __u16 (line 69065) | typedef __u16 __virtio16;
type u16 (line 69067) | typedef u16 acpi_owner_id;
type u16 (line 69069) | typedef u16 acpi_rs_length;
type blkif_vdev_t (line 69071) | typedef uint16_t blkif_vdev_t;
type __u16 (line 69073) | typedef __u16 comp_t;
type u16 (line 69075) | typedef u16 compat_ipc_pid_t;
type u16 (line 69077) | typedef u16 compat_mode_t;
type u16 (line 69079) | typedef u16 compat_ushort_t;
type domid_t (line 69081) | typedef uint16_t domid_t;
type u16 (line 69083) | typedef u16 efi_char16_t;
type __kernel_gid16_t (line 69085) | typedef __kernel_gid16_t gid16_t;
type grant_status_t (line 69087) | typedef uint16_t grant_status_t;
type __kernel_old_gid_t (line 69089) | typedef __kernel_old_gid_t old_gid_t;
type __kernel_old_uid_t (line 69091) | typedef __kernel_old_uid_t old_uid_t;
type pci_bus_flags_t (line 69093) | typedef short unsigned int pci_bus_flags_t;
type pci_dev_flags_t (line 69095) | typedef short unsigned int pci_dev_flags_t;
type __u16 (line 69097) | typedef __u16 port_id;
type __kernel_sa_family_t (line 69099) | typedef __kernel_sa_family_t sa_family_t;
type u16 (line 69101) | typedef u16 u_int16_t;
type u_short (line 69103) | typedef short unsigned int u_short;
type u16 (line 69105) | typedef u16 ucs2_char_t;
type __kernel_uid16_t (line 69107) | typedef __kernel_uid16_t uid16_t;
type __u16 (line 69109) | typedef __u16 uio_meta_flags_t;
type umode_t (line 69111) | typedef short unsigned int umode_t;
type ushort (line 69113) | typedef short unsigned int ushort;
type u16 (line 69115) | typedef u16 wchar_t;
type __s8 (line 69117) | typedef signed char __s8;
type __s8 (line 69119) | typedef __s8 s8;
type s8 (line 69121) | typedef s8 int8_t;
type __u8 (line 69123) | typedef unsigned char __u8;
type __u8 (line 69125) | typedef __u8 u8;
type u8 (line 69127) | typedef u8 uint8_t;
type BYTE (line 69129) | typedef uint8_t BYTE;
type Byte (line 69131) | typedef unsigned char Byte;
type U8 (line 69133) | typedef uint8_t U8;
type u8 (line 69135) | typedef u8 acpi_adr_space_type;
type u8 (line 69137) | typedef u8 blk_status_t;
type cc_t (line 69139) | typedef unsigned char cc_t;
type u8 (line 69141) | typedef u8 dscp_t;
type u8 (line 69143) | typedef u8 efi_bool_t;
type u8 (line 69145) | typedef u8 enet_addr_t[6];
type u8 (line 69147) | typedef u8 rmap_age_t;
type u8___2 (line 69149) | typedef unsigned char u8___2;
type u_char (line 69151) | typedef unsigned char u_char;
type u8 (line 69153) | typedef u8 u_int8_t;
type uch (line 69155) | typedef unsigned char uch;
type __u8 (line 69157) | typedef __u8 virtio_net_ctrl_ack;
type __u32 (line 69161) | typedef unsigned int __u32;
type __u32 (line 69163) | typedef __u32 Elf32_Addr;
type __u32 (line 69165) | typedef __u32 Elf32_Off;
type __u32 (line 69167) | typedef __u32 Elf32_Word;
type __u32 (line 69169) | typedef __u32 Elf64_Word;
type FSE_DTable (line 69171) | typedef unsigned int FSE_DTable;
type __u32 (line 69173) | typedef __u32 u32;
type u32 (line 69175) | typedef u32 uint32_t;
type U32 (line 69177) | typedef uint32_t U32;
type U32 (line 69179) | typedef U32 HUF_DTable;
type IPos (line 69181) | typedef unsigned int IPos;
type OM_uint32 (line 69183) | typedef unsigned int OM_uint32;
type RING_IDX (line 69185) | typedef unsigned int RING_IDX;
type UHWtype (line 69187) | typedef unsigned int UHWtype;
type XENCONS_RING_IDX (line 69189) | typedef uint32_t XENCONS_RING_IDX;
type XENSTORE_RING_IDX (line 69191) | typedef uint32_t XENSTORE_RING_IDX;
type __u32 (line 69193) | typedef __u32 __be32;
type u32 (line 69195) | typedef u32 __compat_gid32_t;
type u32 (line 69197) | typedef u32 __compat_uid32_t;
type __u32 (line 69199) | typedef __u32 __dw;
type __u32 (line 69201) | typedef __u32 __hc32;
type u32 (line 69203) | typedef u32 __kernel_dev_t;
type __kernel_gid32_t (line 69205) | typedef unsigned int __kernel_gid32_t;
type __kernel_gid_t (line 69207) | typedef unsigned int __kernel_gid_t;
type __kernel_mode_t (line 69209) | typedef unsigned int __kernel_mode_t;
type __kernel_old_dev_t (line 69211) | typedef unsigned int __kernel_old_dev_t;
type __kernel_uid32_t (line 69213) | typedef unsigned int __kernel_uid32_t;
type __kernel_uid_t (line 69215) | typedef unsigned int __kernel_uid_t;
type __u32 (line 69217) | typedef __u32 __le32;
type __poll_t (line 69219) | typedef unsigned int __poll_t;
type __u32 (line 69221) | typedef __u32 __portpair;
type __u32 (line 69223) | typedef __u32 __rpmsg32;
type __u32 (line 69225) | typedef __u32 __virtio32;
type __u32 (line 69227) | typedef __u32 __wsum;
type u32 (line 69229) | typedef u32 acpi_event_status;
type u32 (line 69231) | typedef u32 acpi_mutex_handle;
type u32 (line 69233) | typedef u32 acpi_name;
type u32 (line 69235) | typedef u32 acpi_object_type;
type u32 (line 69237) | typedef u32 acpi_rsdesc_size;
type u32 (line 69239) | typedef u32 acpi_status;
type u32 (line 69241) | typedef u32 arm_v7s_iopte;
type autofs_wqt_t (line 69243) | typedef unsigned int autofs_wqt_t;
type blk_features_t (line 69245) | typedef unsigned int blk_features_t;
type blk_flags_t (line 69247) | typedef unsigned int blk_flags_t;
type blk_insert_t (line 69249) | typedef unsigned int blk_insert_t;
type blk_mode_t (line 69251) | typedef unsigned int blk_mode_t;
type __u32 (line 69253) | typedef __u32 blk_mq_req_flags_t;
type __u32 (line 69255) | typedef __u32 blk_opf_t;
type blk_qc_t (line 69257) | typedef unsigned int blk_qc_t;
type u32 (line 69259) | typedef u32 compat_aio_context_t;
type u32 (line 69261) | typedef u32 compat_caddr_t;
type u32 (line 69263) | typedef u32 compat_dev_t;
type compat_elf_greg_t (line 69265) | typedef unsigned int compat_elf_greg_t;
type compat_elf_greg_t (line 69267) | typedef compat_elf_greg_t compat_elf_gregset_t[18];
type u32 (line 69269) | typedef u32 compat_ino_t;
type u32 (line 69271) | typedef u32 compat_old_sigset_t;
type u32 (line 69273) | typedef u32 compat_sigset_word;
type u32 (line 69275) | typedef u32 compat_size_t;
type u32 (line 69277) | typedef u32 compat_uint_t;
type u32 (line 69279) | typedef u32 compat_ulong_t;
type u32 (line 69281) | typedef u32 compat_uptr_t;
type u32 (line 69283) | typedef u32 cppi5_tr_flags_t;
type u32 (line 69285) | typedef u32 depot_flags_t;
type u32 (line 69287) | typedef u32 depot_stack_handle_t;
type __kernel_dev_t (line 69289) | typedef __kernel_dev_t dev_t;
type drbg_flag_t (line 69291) | typedef uint32_t drbg_flag_t;
type u32 (line 69293) | typedef u32 efi_cc_event_algorithm_bitmap_t;
type u32 (line 69295) | typedef u32 efi_cc_event_log_bitmap_t;
type u32 (line 69297) | typedef u32 efi_cc_event_log_format_t;
type u32 (line 69299) | typedef u32 efi_cc_mr_index_t;
type u32 (line 69301) | typedef u32 efi_tcg2_event_log_format;
type u32 (line 69303) | typedef u32 errseq_t;
type event_word_t (line 69305) | typedef uint32_t event_word_t;
type evtchn_port_t (line 69307) | typedef uint32_t evtchn_port_t;
type ext4_group_t (line 69309) | typedef unsigned int ext4_group_t;
type __u32 (line 69311) | typedef __u32 ext4_lblk_t;
type __be32 (line 69313) | typedef __be32 fdt32_t;
type fgf_t (line 69315) | typedef unsigned int fgf_t;
type fmode_t (line 69317) | typedef unsigned int fmode_t;
type fop_flags_t (line 69319) | typedef unsigned int fop_flags_t;
type gfp_t (line 69321) | typedef unsigned int gfp_t;
type __kernel_gid32_t (line 69323) | typedef __kernel_gid32_t gid_t;
type grant_handle_t (line 69325) | typedef uint32_t grant_handle_t;
type grant_ref_t (line 69327) | typedef uint32_t grant_ref_t;
type ioasid_t (line 69329) | typedef unsigned int ioasid_t;
type iov_iter_extraction_t (line 69331) | typedef unsigned int iov_iter_extraction_t;
type isolate_mode_t (line 69333) | typedef unsigned int isolate_mode_t;
type kasan_vmalloc_flags_t (line 69335) | typedef unsigned int kasan_vmalloc_flags_t;
type key_perm_t (line 69337) | typedef uint32_t key_perm_t;
type mmc_pm_flag_t (line 69339) | typedef unsigned int mmc_pm_flag_t;
type __kernel_mode_t (line 69341) | typedef __kernel_mode_t mode_t;
type u32 (line 69343) | typedef u32 nlink_t;
type u32 (line 69345) | typedef u32 note_buf_t[106];
type pci_channel_state_t (line 69347) | typedef unsigned int pci_channel_state_t;
type pci_ers_result_t (line 69349) | typedef unsigned int pci_ers_result_t;
type pgtbl_mod_mask (line 69351) | typedef unsigned int pgtbl_mod_mask;
type u32 (line 69353) | typedef u32 phandle;
type pipe_index_t (line 69355) | typedef unsigned int pipe_index_t;
type pkvm_handle_t (line 69357) | typedef unsigned int pkvm_handle_t;
type __kernel_uid32_t (line 69359) | typedef __kernel_uid32_t projid_t;
type __kernel_uid32_t (line 69361) | typedef __kernel_uid32_t qid_t;
type U32 (line 69363) | typedef U32 rankValCol_t[13];
type __u32 (line 69365) | typedef __u32 req_flags_t;
type u32 (line 69367) | typedef u32 rpc_authflavor_t;
type __be32 (line 69369) | typedef __be32 rpc_fraghdr;
type sk_buff_data_t (line 69371) | typedef unsigned int sk_buff_data_t;
type slab_flags_t (line 69373) | typedef unsigned int slab_flags_t;
type speed_t (line 69375) | typedef unsigned int speed_t;
type t_key (line 69377) | typedef unsigned int t_key;
type tcflag_t (line 69379) | typedef unsigned int tcflag_t;
type tid_t (line 69381) | typedef unsigned int tid_t;
type uInt (line 69383) | typedef unsigned int uInt;
type u_int (line 69385) | typedef unsigned int u_int;
type u32 (line 69387) | typedef u32 u_int32_t;
type __kernel_uid32_t (line 69389) | typedef __kernel_uid32_t uid_t;
type uint (line 69391) | typedef unsigned int uint;
type u32 (line 69393) | typedef u32 unicode_t;
type __le32 (line 69395) | typedef __le32 uprobe_opcode_t;
type upstat_t (line 69397) | typedef unsigned int upstat_t;
type u32 (line 69399) | typedef u32 usb_port_location_t;
type vm_fault_t (line 69401) | typedef unsigned int vm_fault_t;
type xa_mark_t (line 69403) | typedef unsigned int xa_mark_t;
type u32 (line 69405) | typedef u32 xdp_features_t;
type zap_flags_t (line 69407) | typedef unsigned int zap_flags_t;
type BIT_DStream_t (line 69409) | typedef struct {
type DTableDesc (line 69417) | typedef struct {
type FSE_DState_t (line 69424) | typedef struct {
type FSE_DTableHeader (line 69429) | typedef struct {
type FSE_DecompressWksp (line 69434) | typedef struct {
type FSE_decode_t (line 69439) | typedef struct {
type HUF_DEltX1 (line 69445) | typedef struct {
type HUF_DEltX2 (line 69450) | typedef struct {
type HUF_ReadDTableX1_Workspace (line 69456) | typedef struct {
type sortedSymbol_t (line 69464) | typedef struct {
type HUF_ReadDTableX2_Workspace (line 69468) | typedef struct {
type buffer_head (line 69477) | struct buffer_head
type Indirect (line 69479) | typedef struct {
type LZ4_streamDecode_t_internal (line 69485) | typedef struct {
type LZ4_streamDecode_t (line 69492) | typedef union {
type folio (line 69497) | struct folio
type Sector (line 69499) | typedef struct {
type ZSTD_DDict_s (line 69503) | struct ZSTD_DDict_s
type ZSTD_DDict (line 69505) | typedef struct ZSTD_DDict_s ZSTD_DDict;
type ZSTD_DDictHashSet (line 69507) | typedef struct {
type ZSTD_bounds (line 69513) | typedef struct {
type ZSTD_customMem (line 69523) | typedef struct {
type ZSTD_seqSymbol (line 69529) | typedef struct {
type ZSTD_entropyDTables_t (line 69536) | typedef struct {
type ZSTD_frameHeader (line 69545) | typedef struct {
type ZSTD_frameSizeInfo (line 69555) | typedef struct {
type ZSTD_fseState (line 69560) | typedef struct {
type ZSTD_seqSymbol_header (line 69565) | typedef struct {
type __guest_handle_char (line 69570) | typedef struct {
type __guest_handle_evtchn_port_t (line 69577) | typedef struct {
type __guest_handle_int (line 69584) | typedef struct {
type __guest_handle_uchar (line 69591) | typedef struct {
type __guest_handle_uint32_t (line 69598) | typedef struct {
type __guest_handle_uint64_t (line 69605) | typedef struct {
type vcpu_runstate_info (line 69612) | struct vcpu_runstate_info
type __guest_handle_vcpu_runstate_info (line 69614) | typedef struct {
type __guest_handle_void (line 69621) | typedef struct {
type __guest_handle_xen_pfn_t (line 69628) | typedef struct {
type xen_processor_csd (line 69635) | struct xen_processor_csd
type __guest_handle_xen_processor_csd (line 69637) | typedef struct {
type xen_processor_cx (line 69644) | struct xen_processor_cx
type __guest_handle_xen_processor_cx (line 69646) | typedef struct {
type xen_processor_px (line 69653) | struct xen_processor_px
type __guest_handle_xen_processor_px (line 69655) | typedef struct {
type __guest_handle_xen_ulong_t (line 69662) | typedef struct {
type __kernel_fd_set (line 69669) | typedef struct {
type __kernel_fsid_t (line 69673) | typedef struct {
type algo_time_t (line 69677) | typedef struct {
type atomic64_t (line 69682) | typedef struct {
type atomic64_t (line 69686) | typedef atomic64_t atomic_long_t;
type atomic_t (line 69688) | typedef struct {
type be128 (line 69692) | typedef struct {
type blockProperties_t (line 69697) | typedef struct {
type sockptr_t (line 69703) | typedef struct {
type sockptr_t (line 69711) | typedef sockptr_t bpfptr_t;
type permanent_flags_t (line 69713) | struct permanent_flags_t {
type stclear_flags_t (line 69737) | struct stclear_flags_t {
type tpm1_version (line 69746) | struct tpm1_version {
type tpm1_version2 (line 69753) | struct tpm1_version2 {
type timeout_t (line 69758) | struct timeout_t {
type duration_t (line 69765) | struct duration_t {
type cap_t (line 69771) | typedef union {
type cisco_proto (line 69783) | typedef struct {
type raw_spinlock (line 69788) | struct raw_spinlock
type raw_spinlock_t (line 69790) |
Copy disabled (too large)
Download .json
Condensed preview — 1069 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,135K chars).
[
{
"path": ".clang-format",
"chars": 153,
"preview": "---\nBasedOnStyle: Google\nAllowShortIfStatementsOnASingleLine: false\nAllowShortLoopsOnASingleLine: false\nIndentCaseLabels"
},
{
"path": ".dockerignore",
"chars": 44,
"preview": "Dockerfile*\nbuild\n.*.swp\ndocker/Dockerfile*\n"
},
{
"path": ".github/actions/build-container/action.yml",
"chars": 1711,
"preview": "name: \"Build/Push container\"\ndescription: \"Build a BCC CI container and push it when not a pull-request.\"\n\ninputs:\n os_"
},
{
"path": ".github/scripts/check_links.py",
"chars": 1567,
"preview": "#! /usr/bin/env python3\n\nimport re\nimport requests\nimport os\nfrom pathlib import Path\n\nheaders = {\n 'User-Agent': 'Mo"
},
{
"path": ".github/workflows/bcc-test.yml",
"chars": 8991,
"preview": "name: BCC Build and tests\n\non:\n push:\n branches:\n - master\n pull_request:\n\nenv:\n # Use docker.io for Docker H"
},
{
"path": ".github/workflows/check_links.yml",
"chars": 1196,
"preview": "name: Check Broken Links\n\non:\n schedule:\n # First day of month at 00:00 in every 2nd month\n - cron: '0 0 1 */2 *'"
},
{
"path": ".github/workflows/publish-build-containers.yml",
"chars": 1102,
"preview": "name: Publish Build Containers\n\non:\n # We want to update this image regularly and when updating master\n schedule:\n "
},
{
"path": ".github/workflows/publish.yml",
"chars": 1654,
"preview": "name: Publish Build Artifacts\n\non:\n push:\n branches:\n - master\n pull_request:\n\npermissions:\n contents: read #"
},
{
"path": ".gitignore",
"chars": 311,
"preview": "# Editor's files\n*.swp\n*.swo\n*.pyc\n.idea\n*~\n\n# Build artifacts\n/build/\ncmake-build-debug\ndebian/**/*.log\n*critical.log\no"
},
{
"path": ".gitmodules",
"chars": 307,
"preview": "[submodule \"src/cc/libbpf\"]\n\tpath = src/cc/libbpf\n\turl = https://github.com/libbpf/libbpf.git\n[submodule \"libbpf-tools/b"
},
{
"path": ".travis.yml",
"chars": 707,
"preview": "language: python\nmatrix:\n include:\n - name: \"Check helpers on Python 2.7\"\n python: 2.7\n script: ./scripts/"
},
{
"path": "CMakeLists.txt",
"chars": 9325,
"preview": "# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\ncmake_minimum_required(V"
},
{
"path": "CODEOWNERS",
"chars": 819,
"preview": "# This file should be kept up to date with the list of maintainers responsible\n# for the different subdirectories within"
},
{
"path": "CONTRIBUTING-SCRIPTS.md",
"chars": 7540,
"preview": "# Contributing bcc/eBPF scripts\n\nIf you want to contribute scripts to bcc, or improve your own bcc programs, great! Plea"
},
{
"path": "FAQ.txt",
"chars": 2551,
"preview": "Q: while running 'make test' I'm seeing:\n 'ImportError: No module named pyroute2'\nA: Install pyroute2:\n git clone ht"
},
{
"path": "INSTALL.md",
"chars": 22781,
"preview": "# Installing BCC\n\n* [Kernel Configuration](#kernel-configuration)\n* [Packages](#packages)\n - [Debian](#debian---binary)"
},
{
"path": "LICENSE.txt",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "LINKS.md",
"chars": 5671,
"preview": "- 2019-12-06: [My learnings on Linux BPF container performance engineering](https://medium.com/@aimvec/my-learnings-on-l"
},
{
"path": "QUICKSTART.md",
"chars": 587,
"preview": "# Quick Start Guide\n\nA Docker container is provided for user to try out [bcc](https://github.com/iovisor/bcc).\n\nFrom you"
},
{
"path": "README.md",
"chars": 23427,
"preview": "\n# BPF Compiler Collection (BCC)\n\nBCC is a toolkit for creating efficient kernel tracing an"
},
{
"path": "SPECS/Dockerfile.fedora",
"chars": 804,
"preview": "# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nFROM fedora:rawhide\n\nMA"
},
{
"path": "SPECS/bcc+clang.spec",
"chars": 2796,
"preview": "%define debug_package %{nil}\n%define _unpackaged_files_terminate_build 0\n%define llvmver 7.0.1\n\nName: bcc\nVers"
},
{
"path": "SPECS/bcc.spec",
"chars": 4856,
"preview": "%bcond_with local_clang_static\n#lua jit not available for some architectures\n%ifarch ppc64 aarch64 ppc64le\n%{!?with_lua:"
},
{
"path": "cmake/CmakeUninstall.cmake.in",
"chars": 1032,
"preview": "# SPDX-License-Identifier: GPL-2.0-or-later\n# Copyright (C) 2022 Rong Tao\n#\nfunction(UninstallManifest manifest)\nif(NOT "
},
{
"path": "cmake/FindCompilerFlag.cmake",
"chars": 720,
"preview": "# Copyright (c) 2017 Facebook, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nif (ENABLE_NO_PIE)"
},
{
"path": "cmake/FindKernelHeaders.cmake",
"chars": 1109,
"preview": "# Find the kernel headers for the running kernel release\n# This is used to find a \"linux/version.h\" matching the running"
},
{
"path": "cmake/FindLibBpf.cmake",
"chars": 1670,
"preview": "# - Try to find libbpf\n# Once done this will define\n#\n# LIBBPF_FOUND - system has libbpf\n# LIBBPF_INCLUDE_D"
},
{
"path": "cmake/FindLibDebuginfod.cmake",
"chars": 1551,
"preview": "# - Try to find libdebuginfod\n# Once done this will define\n#\n# LIBDEBUGINFOD_FOUND - system has libdebuginfod\n# LIBDEB"
},
{
"path": "cmake/FindLibElf.cmake",
"chars": 1575,
"preview": "# - Try to find libelf\n# Once done this will define\n#\n# LIBELF_FOUND - system has libelf\n# LIBELF_INCLUDE_DIRS - the l"
},
{
"path": "cmake/FindLibLzma.cmake",
"chars": 1037,
"preview": "# - Try to find liblzma\n# Once done this will define\n#\n# LIBLZMA_FOUND - system has liblzma\n# LIBLZMA_INCLUDE_DIRS - t"
},
{
"path": "cmake/FindLuaJIT.cmake",
"chars": 2321,
"preview": "# Locate Lua library\n# This module defines\n# LUAJIT_FOUND, if false, do not try to link to Lua\n# LUAJIT_LIBRARIES\n# L"
},
{
"path": "cmake/GetGitRevisionDescription.cmake",
"chars": 3788,
"preview": "# - Returns a version string from Git\n#\n# These functions force a re-configure on each git commit so that you can\n# trus"
},
{
"path": "cmake/GetGitRevisionDescription.cmake.in",
"chars": 1201,
"preview": "#\n# Internal file for GetGitRevisionDescription.cmake\n#\n# Requires CMake 2.6 or newer (uses the 'function' command)\n#\n# "
},
{
"path": "cmake/bump_version.cmake",
"chars": 554,
"preview": "# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nconfigure_file(SPECS/Do"
},
{
"path": "cmake/clang_libs.cmake",
"chars": 2596,
"preview": "if(ENABLE_LLVM_SHARED)\nset(llvm_libs \"LLVM\")\nelse()\nset(llvm_raw_libs bitwriter bpfcodegen debuginfodwarf irreader linke"
},
{
"path": "cmake/static_libstdc++.cmake",
"chars": 922,
"preview": "# only turn on static-libstdc++ if also linking statically against clang\nstring(REGEX MATCH \".*[.]a$\" LIBCLANG_ISSTATIC "
},
{
"path": "cmake/version.cmake",
"chars": 1551,
"preview": "# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\nif(NOT REVISION)\n get_g"
},
{
"path": "debian/bcc-lua.install",
"chars": 16,
"preview": "usr/bin/bcc-lua\n"
},
{
"path": "debian/bcc-tools.install",
"chars": 72,
"preview": "usr/share/bcc/introspection/*\nusr/share/bcc/tools/*\nusr/share/bcc/man/*\n"
},
{
"path": "debian/changelog",
"chars": 22446,
"preview": "bcc (0.36.1-1) unstable; urgency=low\n\n * Bug Fixes\n Sync BCC with libbpf submodule update (afb8b17) (#5455, #5460)\n "
},
{
"path": "debian/compat",
"chars": 2,
"preview": "9\n"
},
{
"path": "debian/control",
"chars": 1670,
"preview": "Source: bcc\nMaintainer: Brenden Blanco <bblanco@plumgrid.com>\nSection: misc\nPriority: optional\nStandards-Version: 3.9.5\n"
},
{
"path": "debian/copyright",
"chars": 193,
"preview": "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: bcc\nSource: https://github.com/"
},
{
"path": "debian/docs",
"chars": 30,
"preview": "FAQ.txt\nLICENSE.txt\nREADME.md\n"
},
{
"path": "debian/libbcc-examples.install",
"chars": 25,
"preview": "usr/share/bcc/examples/*\n"
},
{
"path": "debian/libbcc.install",
"chars": 66,
"preview": "usr/include/bcc/*\nusr/lib/*/libbcc*\nusr/lib/*/pkgconfig/libbcc.pc\n"
},
{
"path": "debian/python-bcc.install",
"chars": 17,
"preview": "usr/lib/python3*\n"
},
{
"path": "debian/rules",
"chars": 860,
"preview": "#!/usr/bin/make -f\n# -*- makefile -*-\n\n# Uncomment this to turn on verbose mode.\n#export DH_VERBOSE=1\n\nDEBIAN_VERSION :="
},
{
"path": "debian/source/format",
"chars": 12,
"preview": "3.0 (quilt)\n"
},
{
"path": "docker/Dockerfile.debian",
"chars": 458,
"preview": "FROM debian:stretch\n\nMAINTAINER Brenden Blanco <bblanco@gmail.com>\n\nRUN DEBIAN_RELEASE=stretch && \\\n # Adding non-fre"
},
{
"path": "docker/Dockerfile.ubuntu",
"chars": 697,
"preview": "ARG OS_TAG=22.04\nFROM ubuntu:${OS_TAG} as builder\n\nARG OS_TAG\nARG BUILD_TYPE=release\nARG DEBIAN_FRONTEND=noninteractive\n"
},
{
"path": "docker/build/Dockerfile.fedora",
"chars": 1526,
"preview": "# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nARG VERSION=\"34\"\nFROM f"
},
{
"path": "docker/build/Dockerfile.ubuntu",
"chars": 3216,
"preview": "ARG VERSION=\"24.04\"\nFROM ubuntu:${VERSION}\n\nARG LLVM_VERSION=\"15\"\nENV LLVM_VERSION=$LLVM_VERSION\n\nARG SHORTNAME=\"noble\"\n"
},
{
"path": "docs/kernel-versions.md",
"chars": 68855,
"preview": "# BPF Features by Linux Kernel Version\n\n## eBPF support\n\nKernel version | Commit\n---------------|-------\n3.15 | [`bd4cf0"
},
{
"path": "docs/kernel_config.md",
"chars": 4521,
"preview": "# Kernel Configuration for BPF Features\n\n## BPF Related Kernel Configurations\n\n| Functionalities | Kernel Configuration "
},
{
"path": "docs/reference_guide.md",
"chars": 106119,
"preview": "# bcc Reference Guide\n\nIntended for search (Ctrl-F) and reference. For tutorials, start with [tutorial.md](tutorial.md)."
},
{
"path": "docs/special_filtering.md",
"chars": 3310,
"preview": "# Special Filtering\n\nSome tools have special filtering capabitilies, the main use case is to trace\nprocesses running in "
},
{
"path": "docs/tutorial.md",
"chars": 19290,
"preview": "# bcc Tutorial\n\nThis tutorial covers how to use [bcc](https://github.com/iovisor/bcc) tools to quickly solve performance"
},
{
"path": "docs/tutorial_bcc_python_developer.md",
"chars": 32588,
"preview": "# bcc Python Developer Tutorial\n\nThis tutorial is about developing [bcc](https://github.com/iovisor/bcc) tools and progr"
},
{
"path": "examples/CMakeLists.txt",
"chars": 270,
"preview": "set(EXAMPLE_PROGRAMS hello_world.py)\ninstall(PROGRAMS ${EXAMPLE_PROGRAMS} DESTINATION share/bcc/examples)\n\nif(ENABLE_CLA"
},
{
"path": "examples/cgroupid/Dockerfile",
"chars": 353,
"preview": "# builder image\nFROM ubuntu:18.04 as builder\nRUN apt-get update && \\\napt-get upgrade -y && \\\napt-get install -y --no-ins"
},
{
"path": "examples/cgroupid/Makefile",
"chars": 63,
"preview": "cgroupid: cgroupid.c\n\tgcc -Wall -static -o cgroupid cgroupid.c\n"
},
{
"path": "examples/cgroupid/cgroupid.c",
"chars": 2429,
"preview": "#define _GNU_SOURCE\n#include <stdlib.h>\n#include <stdio.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <fcntl."
},
{
"path": "examples/cpp/CGroupTest.cc",
"chars": 2236,
"preview": "/*\n * CGroupTest Demonstrate how to use BPF cgroup API to collect file open event\n *\n * Basic example of cgroup and BPF "
},
{
"path": "examples/cpp/CMakeLists.txt",
"chars": 1156,
"preview": "# Copyright (c) Facebook, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\ninclude_directories(${P"
},
{
"path": "examples/cpp/CPUDistribution.cc",
"chars": 2485,
"preview": "/*\n * CPUDistribution Show load distribution across CPU cores during a period of\n * time. For Linux, use"
},
{
"path": "examples/cpp/FollyRequestContextSwitch.cc",
"chars": 3234,
"preview": "/*\n * FollyRequestContextSwitch Monitor RequestContext switch events for any binary\n * uses th"
},
{
"path": "examples/cpp/HelloWorld.cc",
"chars": 1370,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#include <unis"
},
{
"path": "examples/cpp/KFuncExample.cc",
"chars": 2915,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n *\n * Usage:\n * ."
},
{
"path": "examples/cpp/KModRetExample.cc",
"chars": 4523,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n *\n * Usage:\n * $"
},
{
"path": "examples/cpp/LLCStat.cc",
"chars": 3341,
"preview": "/*\n * LLCStat Show LLC hit ratio for each process on each CPU core.\n * For Linux, uses BCC, eBPF. Embedded C.\n *"
},
{
"path": "examples/cpp/RandomRead.cc",
"chars": 3457,
"preview": "/*\n * RandomRead Monitor random number read events.\n * For Linux, uses BCC, eBPF. Embedded C.\n *\n * Basic exa"
},
{
"path": "examples/cpp/RecordMySQLQuery.cc",
"chars": 2602,
"preview": "/*\n * RecordMySQLQuery Record MySQL queries by probing the alloc_query() function\n * in mysqld. For Lin"
},
{
"path": "examples/cpp/SkLocalStorageIterator.cc",
"chars": 4382,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n *\n * Usage:\n * ."
},
{
"path": "examples/cpp/TCPSendStack.cc",
"chars": 3649,
"preview": "/*\n * TCPSendStack Summarize tcp_sendmsg() calling stack traces.\n * For Linux, uses BCC, eBPF. Embedded C.\n"
},
{
"path": "examples/cpp/TaskIterator.cc",
"chars": 3004,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n *\n * Usage:\n * ."
},
{
"path": "examples/cpp/UseExternalMap.cc",
"chars": 3957,
"preview": "/*\n * UseExternalMap shows how to access an external map through\n * C++ interface. The external map could be a pinned ma"
},
{
"path": "examples/cpp/pyperf/CMakeLists.txt",
"chars": 686,
"preview": "# Copyright (c) Facebook, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\ninclude_directories(${C"
},
{
"path": "examples/cpp/pyperf/Py36Offsets.cc",
"chars": 1269,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#include \"PyPe"
},
{
"path": "examples/cpp/pyperf/PyPerf.cc",
"chars": 3303,
"preview": "/*\n * PyPerf Profile Python Processes with Python stack-trace.\n * For Linux, uses BCC, eBPF. Embedded C.\n *\n * Ex"
},
{
"path": "examples/cpp/pyperf/PyPerfBPFProgram.cc",
"chars": 15734,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#include <stri"
},
{
"path": "examples/cpp/pyperf/PyPerfDefaultPrinter.cc",
"chars": 3876,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#include <map>"
},
{
"path": "examples/cpp/pyperf/PyPerfDefaultPrinter.h",
"chars": 754,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#pragma once\n\n"
},
{
"path": "examples/cpp/pyperf/PyPerfLoggingHelper.cc",
"chars": 582,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#include <cstd"
},
{
"path": "examples/cpp/pyperf/PyPerfLoggingHelper.h",
"chars": 321,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#pragma once\n\n"
},
{
"path": "examples/cpp/pyperf/PyPerfSampleProcessor.h",
"chars": 432,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#pragma once\n\n"
},
{
"path": "examples/cpp/pyperf/PyPerfType.h",
"chars": 3279,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#pragma once\n\n"
},
{
"path": "examples/cpp/pyperf/PyPerfUtil.cc",
"chars": 11287,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#include <algo"
},
{
"path": "examples/cpp/pyperf/PyPerfUtil.h",
"chars": 1449,
"preview": "/*\n * Copyright (c) Facebook, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\")\n */\n\n#pragma once\n\n"
},
{
"path": "examples/hello_world.py",
"chars": 459,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\n# run"
},
{
"path": "examples/local_storage/inode_storage.py",
"chars": 545,
"preview": "#!/usr/bin/python3\n\nfrom bcc import BPF\n\nsource = r\"\"\"\n#include <linux/fs.h>\n\nBPF_INODE_STORAGE(inode_storage_map, int);"
},
{
"path": "examples/local_storage/task_storage.py",
"chars": 928,
"preview": "#!/usr/bin/python3\n\nfrom bcc import BPF\n\nsource = r\"\"\"\nBPF_TASK_STORAGE(task_storage_map, __u64);\n\nKFUNC_PROBE(inet_list"
},
{
"path": "examples/lua/CMakeLists.txt",
"chars": 176,
"preview": "file(GLOB C_FILES *.c)\nfile(GLOB LUA_FILES *.lua)\ninstall(FILES ${C_FILES} DESTINATION share/bcc/examples/lua)\ninstall(P"
},
{
"path": "examples/lua/bashreadline.c",
"chars": 476,
"preview": "#include <uapi/linux/ptrace.h>\n\nstruct str_t {\n\tu64 pid;\n\tchar str[80];\n};\n\nBPF_PERF_OUTPUT(events);\n\nint printret(struc"
},
{
"path": "examples/lua/bashreadline.lua",
"chars": 1107,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 GitHub, Inc\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "examples/lua/kprobe-latency.lua",
"chars": 2518,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 Marek Vavrusa <mvavrusa@cloudflare.com>\n\nLicensed under the Apache License, V"
},
{
"path": "examples/lua/kprobe-write.lua",
"chars": 1125,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 Marek Vavrusa <mvavrusa@cloudflare.com>\n\nLicensed under the Apache License, V"
},
{
"path": "examples/lua/memleak.lua",
"chars": 6196,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 GitHub, Inc\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "examples/lua/offcputime.lua",
"chars": 3114,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 GitHub, Inc\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "examples/lua/sock-parse-dns.lua",
"chars": 1694,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 Marek Vavrusa <mvavrusa@cloudflare.com>\n\nLicensed under the Apache License, V"
},
{
"path": "examples/lua/sock-parse-http.lua",
"chars": 2026,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 Marek Vavrusa <mvavrusa@cloudflare.com>\n\nLicensed under the Apache License, V"
},
{
"path": "examples/lua/sock-proto.lua",
"chars": 1436,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 Marek Vavrusa <mvavrusa@cloudflare.com>\n\nLicensed under the Apache License, V"
},
{
"path": "examples/lua/sock-protolen.lua",
"chars": 1537,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 Marek Vavrusa <mvavrusa@cloudflare.com>\n\nLicensed under the Apache License, V"
},
{
"path": "examples/lua/strlen_count.lua",
"chars": 1305,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 GitHub, Inc\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "examples/lua/task_switch.lua",
"chars": 1412,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 GitHub, Inc\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "examples/lua/tracepoint-offcputime.lua",
"chars": 2650,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 Marek Vavrusa <mvavrusa@cloudflare.com>\n\nLicensed under the Apache License, V"
},
{
"path": "examples/lua/uprobe-readline-perf.lua",
"chars": 1927,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 Marek Vavrusa <mvavrusa@cloudflare.com>\n\nLicensed under the Apache License, V"
},
{
"path": "examples/lua/uprobe-readline.lua",
"chars": 1556,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 Marek Vavrusa <mvavrusa@cloudflare.com>\n\nLicensed under the Apache License, V"
},
{
"path": "examples/lua/uprobe-tailkt.lua",
"chars": 2555,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 Marek Vavrusa <mvavrusa@cloudflare.com>\n\nLicensed under the Apache License, V"
},
{
"path": "examples/lua/usdt_ruby.lua",
"chars": 1214,
"preview": "#!/usr/bin/env bcc-lua\n--[[\nCopyright 2016 GitHub, Inc\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "examples/networking/CMakeLists.txt",
"chars": 455,
"preview": "set(EXAMPLE_FILES simulation.py)\nset(EXAMPLE_PROGRAMS simple_tc.py tc_perf_event.py net_monitor.py sockmap.py)\ninstall(F"
},
{
"path": "examples/networking/distributed_bridge/CMakeLists.txt",
"chars": 303,
"preview": "set(EXAMPLE_FILES simulation.py tunnel.c tunnel_mesh.c)\nset(EXAMPLE_PROGRAMS main.py tunnel_mesh.py tunnel.py)\ninstall(F"
},
{
"path": "examples/networking/distributed_bridge/main.py",
"chars": 2983,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nfrom "
},
{
"path": "examples/networking/distributed_bridge/tunnel.c",
"chars": 2421,
"preview": "// Copyright (c) PLUMgrid, Inc.\n// Licensed under the Apache License, Version 2.0 (the \"License\")\n#include <bcc/proto.h>"
},
{
"path": "examples/networking/distributed_bridge/tunnel.py",
"chars": 2606,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nfrom "
},
{
"path": "examples/networking/distributed_bridge/tunnel_mesh.c",
"chars": 1835,
"preview": "// Copyright (c) PLUMgrid, Inc.\n// Licensed under the Apache License, Version 2.0 (the \"License\")\n#include <bcc/proto.h>"
},
{
"path": "examples/networking/distributed_bridge/tunnel_mesh.py",
"chars": 5297,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nfrom "
},
{
"path": "examples/networking/dns_matching/dns_matching.c",
"chars": 2367,
"preview": "/*\n * dns_matching.c Drop DNS packets requesting DNS name contained in hash map\n * For Linux, uses BCC, eBPF. See .p"
},
{
"path": "examples/networking/dns_matching/dns_matching.py",
"chars": 3298,
"preview": "#!/usr/bin/python\n\nfrom __future__ import print_function\nfrom bcc import BPF\nfrom ctypes import *\n\nimport os\nimport sys\n"
},
{
"path": "examples/networking/http_filter/CMakeLists.txt",
"chars": 283,
"preview": "set(FILES http-parse-complete.c http-parse-simple.c README.md)\nset(PROGRAMS http-parse-complete.py http-parse-simple.py)"
},
{
"path": "examples/networking/http_filter/README.md",
"chars": 2101,
"preview": "# HTTP Filter\n\neBPF application that parses HTTP packets and extracts (and prints on screen) the URL contained in the GE"
},
{
"path": "examples/networking/http_filter/http-parse-complete.c",
"chars": 4392,
"preview": "#include <uapi/linux/ptrace.h>\n#include <net/sock.h>\n#include <bcc/proto.h>\n\n#define IP_TCP \t6\n#define ETH_HLEN 14\n\nstru"
},
{
"path": "examples/networking/http_filter/http-parse-complete.py",
"chars": 11329,
"preview": "#!/usr/bin/python\n#\n# Bertrone Matteo - Polytechnic of Turin\n# November 2015\n#\n# eBPF application that parses HTTP packe"
},
{
"path": "examples/networking/http_filter/http-parse-simple.c",
"chars": 3026,
"preview": "#include <uapi/linux/ptrace.h>\n#include <net/sock.h>\n#include <bcc/proto.h>\n\n#define IP_TCP \t6\n#define ETH_HLEN 14\n\n/*eB"
},
{
"path": "examples/networking/http_filter/http-parse-simple.py",
"chars": 5260,
"preview": "#!/usr/bin/python\n#\n#Bertrone Matteo - Polytechnic of Turin\n#November 2015\n#\n#eBPF application that parses HTTP packets\n"
},
{
"path": "examples/networking/neighbor_sharing/CMakeLists.txt",
"chars": 299,
"preview": "set(EXAMPLE_FILES README.txt simulation.py tc_neighbor_sharing.c)\nset(EXAMPLE_PROGRAMS tc_neighbor_sharing.py)\ninstall(F"
},
{
"path": "examples/networking/neighbor_sharing/README.txt",
"chars": 2707,
"preview": "This example shows how a combination of BPF programs can be used to perform\nper-IP classification and rate limiting. The"
},
{
"path": "examples/networking/neighbor_sharing/tc_neighbor_sharing.c",
"chars": 1641,
"preview": "// Copyright (c) PLUMgrid, Inc.\n// Licensed under the Apache License, Version 2.0 (the \"License\")\n\n#include <bcc/proto.h"
},
{
"path": "examples/networking/neighbor_sharing/tc_neighbor_sharing.py",
"chars": 2990,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nfrom "
},
{
"path": "examples/networking/net_monitor.py",
"chars": 3332,
"preview": "#!/usr/bin/python\n#\n# net_monitor.py Aggregates incoming network traffic\n# outputs source ip, destination ip, the number"
},
{
"path": "examples/networking/simple_tc.py",
"chars": 852,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nfrom "
},
{
"path": "examples/networking/simulation.py",
"chars": 5257,
"preview": "import os\nimport subprocess\nimport pyroute2\nfrom pyroute2 import IPRoute, NetNS, IPDB, NSPopen\n\nclass Simulation(object)"
},
{
"path": "examples/networking/sockmap.py",
"chars": 3593,
"preview": "#!/usr/bin/python\n# @lint-avoid-python-3-compatibility-imports\n#\n# Copyright (c) 2021 Chenyue Zhou\n\nfrom __future__ impo"
},
{
"path": "examples/networking/tc_perf_event.py",
"chars": 2583,
"preview": "#!/usr/bin/python\n#\n# tc_perf_event.py Output skb and meta data through perf event\n#\n# Copyright (c) 2016-present, Face"
},
{
"path": "examples/networking/tcp_mon_block/README.md",
"chars": 3492,
"preview": "# eBPF tcp_mon_block\n\nThis eBPF program uses netlink TC, kernel tracepoints and kprobes to monitor outgoing connections "
},
{
"path": "examples/networking/tcp_mon_block/src/allow_list.json",
"chars": 160,
"preview": "[\n {\n \"pid\": \"53927\",\n \"allow_list\": [\"192.168.1.2\", \"192.168.1.3\", \"https://api.ipify.org\"]\n },\n {\n \"pid\": \"1111\""
},
{
"path": "examples/networking/tcp_mon_block/src/http_client.py",
"chars": 642,
"preview": "import requests\n\n\nserver_address = \"192.168.1.42\"\napi_address = \"https://api.ipify.org\"\n\n# https://api.ipify.org should "
},
{
"path": "examples/networking/tcp_mon_block/src/tcp_mon_block.c",
"chars": 5805,
"preview": "/*author: https://github.com/agentzex\nLicensed under the Apache License, Version 2.0 (the \"License\")\n\ntcp_mon_block.c - "
},
{
"path": "examples/networking/tcp_mon_block/src/tcp_mon_block.py",
"chars": 6292,
"preview": "#!/usr/bin/python\n# author: https://github.com/agentzex\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
},
{
"path": "examples/networking/tcp_mon_block/src/web_server.py",
"chars": 1008,
"preview": "from flask import Flask, request\nimport requests\nimport os\n\n# Forcing requests to use IPV4 addresses only currently\nrequ"
},
{
"path": "examples/networking/tunnel_monitor/CMakeLists.txt",
"chars": 285,
"preview": "set(FILES README.md chord.png monitor.c simulation.py vxlan.jpg)\nset(PROGRAMS main.py monitor.py setup.sh traffic.sh)\nin"
},
{
"path": "examples/networking/tunnel_monitor/README.md",
"chars": 2609,
"preview": "## Tunnel Monitor Example\n\nThis example shows how to use a BPF program to parse packets across an\nencapsulation boundary"
},
{
"path": "examples/networking/tunnel_monitor/main.py",
"chars": 3412,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nfrom "
},
{
"path": "examples/networking/tunnel_monitor/monitor.c",
"chars": 3221,
"preview": "// Copyright (c) PLUMgrid, Inc.\n// Licensed under the Apache License, Version 2.0 (the \"License\")\n#include <bcc/proto.h>"
},
{
"path": "examples/networking/tunnel_monitor/monitor.py",
"chars": 2892,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nfrom "
},
{
"path": "examples/networking/tunnel_monitor/setup.sh",
"chars": 716,
"preview": "#!/bin/bash\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\n# this scri"
},
{
"path": "examples/networking/tunnel_monitor/traffic.sh",
"chars": 1306,
"preview": "#!/bin/bash\n\ncmd=\"ip netns exec host0\"\nif [[ \"$(id -u)\" != \"0\" ]]; then\n cmd=\"sudo $cmd\"\nfi\n\nB=/usr/bin/byobu\nS=tunnel1"
},
{
"path": "examples/networking/vlan_filter/README.md",
"chars": 2393,
"preview": "# VLAN Filter #\nThis is eBPF application to parse VXLAN packets and then extracts encapsulated VLAN packets to monitor t"
},
{
"path": "examples/networking/vlan_filter/data-plane-tracing.c",
"chars": 1332,
"preview": "#include <uapi/linux/ptrace.h>\n#include <net/sock.h>\n#include <bcc/proto.h>\n\n#define IP_TCP \t6\n#define IP_UDP 17\n#define"
},
{
"path": "examples/networking/vlan_filter/data-plane-tracing.py",
"chars": 7601,
"preview": "#!/usr/bin/python\nfrom __future__ import print_function\nfrom bcc import BPF\n\nimport sys\nimport socket\nimport os\nimport a"
},
{
"path": "examples/networking/vlan_filter/test_setup.sh",
"chars": 5247,
"preview": "#!/bin/bash\n\n# This script must be executed by root user\nif [ \"$(id -u)\" != \"0\" ]; then\n echo \"This script must be run"
},
{
"path": "examples/networking/vlan_filter/test_traffic.sh",
"chars": 109,
"preview": "#!/bin/bash\n\nip netns exec netns11 ping 192.168.100.12 -c 10\nip netns exec netns22 ping 192.168.200.21 -c 10\n"
},
{
"path": "examples/networking/vlan_learning/CMakeLists.txt",
"chars": 281,
"preview": "set(EXAMPLE_FILES README.txt simulation.py vlan_learning.c)\nset(EXAMPLE_PROGRAMS vlan_learning.py)\ninstall(FILES ${EXAMP"
},
{
"path": "examples/networking/vlan_learning/README.txt",
"chars": 2030,
"preview": "This example shows a unique way to use a BPF program to demux any ethernet\ntraffic into a pool of worker veth+namespaces"
},
{
"path": "examples/networking/vlan_learning/vlan_learning.c",
"chars": 2032,
"preview": "// Copyright (c) PLUMgrid, Inc.\n// Licensed under the Apache License, Version 2.0 (the \"License\")\n\n#include <bcc/proto.h"
},
{
"path": "examples/networking/vlan_learning/vlan_learning.py",
"chars": 3744,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nfrom "
},
{
"path": "examples/networking/xdp/CMakeLists.txt",
"chars": 101,
"preview": "file(GLOB PY_FILES *.py)\ninstall(PROGRAMS ${PY_FILES} DESTINATION share/bcc/examples/networking/xdp)\n"
},
{
"path": "examples/networking/xdp/xdp_drop_count.py",
"chars": 4360,
"preview": "#!/usr/bin/python\n#\n# xdp_drop_count.py Drop incoming packets on XDP layer and count for which\n# proto"
},
{
"path": "examples/networking/xdp/xdp_macswap_count.py",
"chars": 4544,
"preview": "#!/usr/bin/python\n#\n# xdp_macswap_count.py Swap Source and Destination MAC addresses on\n# incoming "
},
{
"path": "examples/networking/xdp/xdp_redirect_cpu.py",
"chars": 2025,
"preview": "#!/usr/bin/python\n#\n# xdp_redirect_cpu.py Redirect the incoming packet to the specific CPU\n#\n# Copyright (c) 2018 Gary L"
},
{
"path": "examples/networking/xdp/xdp_redirect_map.py",
"chars": 2273,
"preview": "#!/usr/bin/python\n#\n# xdp_redirect_map.py Redirect the incoming packet to another interface\n# with t"
},
{
"path": "examples/perf/ipc.py",
"chars": 5518,
"preview": "#!/usr/bin/python\n# IPC - Instructions Per Cycles using Perf Events and\n# uprobes\n# 24-Apr-2020\tSaleem Ahmad\tCreated thi"
},
{
"path": "examples/ringbuf/ringbuf_output.py",
"chars": 1047,
"preview": "#!/usr/bin/python3\n\nimport sys\nimport time\n\nfrom bcc import BPF\n\nsrc = r\"\"\"\nBPF_RINGBUF_OUTPUT(buffer, 1 << 4);\n\nstruct "
},
{
"path": "examples/ringbuf/ringbuf_submit.py",
"chars": 1144,
"preview": "#!/usr/bin/python3\n\nimport sys\nimport time\n\nfrom bcc import BPF\n\nsrc = r\"\"\"\nBPF_RINGBUF_OUTPUT(buffer, 1 << 4);\n\nstruct "
},
{
"path": "examples/tracing/CMakeLists.txt",
"chars": 276,
"preview": "file(GLOB C_FILES *.c)\nfile(GLOB PY_FILES *.py)\nfile(GLOB TXT_FILES *.txt)\ninstall(PROGRAMS ${PY_FILES} DESTINATION shar"
},
{
"path": "examples/tracing/biolatpcts.py",
"chars": 3312,
"preview": "#!/usr/bin/python\n#\n# biolatpcts.py IO latency percentile calculation example\n#\n# Copyright (C) 2020 Tejun Heo <tj@kern"
},
{
"path": "examples/tracing/biolatpcts_example.txt",
"chars": 650,
"preview": "Demonstrations of biolatpcts.py, the Linux eBPF/bcc version.\n\n\nThis traces block I/O and uses layered percpu arrays to b"
},
{
"path": "examples/tracing/bitehist.py",
"chars": 1727,
"preview": "#!/usr/bin/python3\n#\n# bitehist.py\tBlock I/O size histogram.\n#\t\tFor Linux, uses BCC, eBPF. Embedded C.\n#\n# Written as a "
},
{
"path": "examples/tracing/bitehist_example.txt",
"chars": 1208,
"preview": "Demonstrations of bitehist.py, the Linux eBPF/bcc version.\n\nThis prints a power-of-2 histogram to show the block I/O siz"
},
{
"path": "examples/tracing/dddos.py",
"chars": 3818,
"preview": "#!/usr/bin/python\n#\n# dddos.py\tDDOS dectection system.\n#\n# Written as a basic tracing example of using ePBF\n# to detect "
},
{
"path": "examples/tracing/dddos_example.txt",
"chars": 2112,
"preview": "Demonstrations of dddos.py, the Linux eBPF/bcc version.\n\nThis tracks ip_rcv function (using kprobe) and elapsed time\nbet"
},
{
"path": "examples/tracing/disksnoop.py",
"chars": 2208,
"preview": "#!/usr/bin/python3\n#\n# disksnoop.py\tTrace block device I/O: basic version of iosnoop.\n#\t\tFor Linux, uses BCC, eBPF. Embe"
},
{
"path": "examples/tracing/disksnoop_example.txt",
"chars": 1586,
"preview": "Demonstrations of disksnoop.py, the Linux eBPF/bcc version.\n\n\nThis traces block I/O, a prints a line to summarize each I"
},
{
"path": "examples/tracing/hello_fields.py",
"chars": 679,
"preview": "#!/usr/bin/python\n#\n# This is a Hello World example that formats output as fields.\n\nfrom bcc import BPF\nfrom bcc.utils i"
},
{
"path": "examples/tracing/hello_perf_output.py",
"chars": 1270,
"preview": "#!/usr/bin/python\n#\n# This is a Hello World example that uses BPF_PERF_OUTPUT.\n\nfrom bcc import BPF\nfrom bcc.utils impor"
},
{
"path": "examples/tracing/hello_perf_output_using_ns.py",
"chars": 1843,
"preview": "#!/usr/bin/python\n# Carlos Neira <cneirabustos@gmail.com>\n# This is a Hello World example that uses BPF_PERF_OUTPUT.\n# i"
},
{
"path": "examples/tracing/kvm_hypercall.py",
"chars": 1520,
"preview": "#!/usr/bin/python\n#\n# kvm_hypercall.py\n#\n# Demonstrates stateful kvm_entry and kvm_exit recording along with the\n# assoc"
},
{
"path": "examples/tracing/kvm_hypercall.txt",
"chars": 1782,
"preview": "Demonstrations of kvm_hypercall.py, showing eBPF/bcc based hypercall analysis\n\nThis example demonstrates how we can stat"
},
{
"path": "examples/tracing/lbr.py",
"chars": 9425,
"preview": "#!/usr/bin/python\n#\n# lbr.py\n#\n# Trace conditional branches executed by syscalls using the Last Branch Record\n# Buffer ("
},
{
"path": "examples/tracing/mallocstacks.py",
"chars": 1978,
"preview": "#!/usr/bin/python\n#\n# mallocstacks Trace malloc() calls in a process and print the full\n# stack trace for"
},
{
"path": "examples/tracing/mysqld_query.py",
"chars": 1701,
"preview": "#!/usr/bin/python\n#\n# mysqld_query Trace MySQL server queries. Example of USDT tracing.\n# For Linux, "
},
{
"path": "examples/tracing/mysqld_query_example.txt",
"chars": 499,
"preview": "# ./mysqld_query.py `pgrep -n mysqld`\nTIME(s) COMM PID QUERY\n17450459.549910001 mysqld "
},
{
"path": "examples/tracing/nflatency.py",
"chars": 6214,
"preview": "#!/usr/bin/python3\n#\n# nflatency Trace netfilter hook latency.\n#\n# This attaches a kprobe and kretprobe to nf_hook_s"
},
{
"path": "examples/tracing/nodejs_http_server.py",
"chars": 1376,
"preview": "#!/usr/bin/python\n#\n# nodejs_http_server Basic example of node.js USDT tracing.\n# For Linux, us"
},
{
"path": "examples/tracing/nodejs_http_server_example.txt",
"chars": 276,
"preview": "# ./nodejs_http_server.py 24728\nTIME(s) COMM PID ARGS\n24653324.561322998 node 2472"
},
{
"path": "examples/tracing/setuid_monitor.py",
"chars": 1506,
"preview": "#!/usr/bin/python3\n#\n# setuid_monitor A setuid syscall monitor, as the example of\n# utilizing kerne"
},
{
"path": "examples/tracing/setuid_monitor_example.txt",
"chars": 829,
"preview": "Examples of setuid_monitor.py, the Linux eBPF/bcc version.\n\n\nTo demonstrate this, run following or other commands in whi"
},
{
"path": "examples/tracing/stack_buildid_example.py",
"chars": 3106,
"preview": "#!/usr/bin/python\n#\n# An example usage of stack_build_id\n# Most of the code here is borrowed from tools/profile.py\n#\n# S"
},
{
"path": "examples/tracing/stacksnoop.py",
"chars": 3252,
"preview": "#!/usr/bin/python\n#\n# stacksnoop Trace a kernel function and print all kernel stack traces.\n# For Linux"
},
{
"path": "examples/tracing/stacksnoop_example.txt",
"chars": 2870,
"preview": "Demonstrations of stacksnoop, the Linux eBPF/bcc version.\n\n\nThis program traces the given kernel function and prints the"
},
{
"path": "examples/tracing/strlen_count.py",
"chars": 1331,
"preview": "#!/usr/bin/python\n#\n# strlen_count Trace strlen() and print a frequency count of strings.\n# For Linux, us"
},
{
"path": "examples/tracing/strlen_hist.py",
"chars": 1856,
"preview": "#!/usr/bin/python\n\n#\n# strlen_hist.py Histogram of system-wide strlen return values\n#\n# A basic example of using uprob"
},
{
"path": "examples/tracing/strlen_hist_ifunc.py",
"chars": 3800,
"preview": "#!/usr/bin/python\n#\n# strlen_hist_ifunc.py Histogram of system-wide strlen return values.\n# This can be used instead"
},
{
"path": "examples/tracing/strlen_snoop.py",
"chars": 1384,
"preview": "#!/usr/bin/python\n#\n# strlen_snoop Trace strlen() library function for a given PID.\n# For Linux, uses BCC"
},
{
"path": "examples/tracing/sync_timing.py",
"chars": 1390,
"preview": "#!/usr/bin/python\n#\n# sync_timing.py Trace time between syncs.\n# For Linux, uses BCC, eBPF. Embedde"
},
{
"path": "examples/tracing/task_switch.c",
"chars": 499,
"preview": "#include <uapi/linux/ptrace.h>\n#include <linux/sched.h>\n\nstruct key_t {\n u32 prev_pid;\n u32 curr_pid;\n};\n\nBPF_HASH"
},
{
"path": "examples/tracing/task_switch.py",
"chars": 489,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\nfrom "
},
{
"path": "examples/tracing/tcpv4connect.py",
"chars": 2413,
"preview": "#!/usr/bin/python\n#\n# tcpv4connect\tTrace TCP IPv4 connect()s.\n#\t\tFor Linux, uses BCC, eBPF. Embedded C.\n#\n# USAGE: tcpv4"
},
{
"path": "examples/tracing/tcpv4connect_example.txt",
"chars": 1057,
"preview": "Demonstrations of tcpv4connect.py, the Linux eBPF/bcc version.\n\n\nThis example traces the kernel function performing acti"
},
{
"path": "examples/tracing/trace_fields.py",
"chars": 589,
"preview": "#!/usr/bin/python\n# Copyright (c) PLUMgrid, Inc.\n# Licensed under the Apache License, Version 2.0 (the \"License\")\n\n# Thi"
}
]
// ... and 869 more files (download for full content)
About this extraction
This page contains the full source code of the iovisor/bcc GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1069 files (25.7 MB), approximately 4.0M tokens, and a symbol index with 75442 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.