You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hmz007 36ed224bac
Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a)
1 year ago
..
android Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
arm64 Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bin Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
powerpc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
x86 Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
.gitignore Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
Android.bp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
Makefile Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
README.md Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bashreadline.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bashreadline.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bashreadline.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bindsnoop.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bindsnoop.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bindsnoop.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biolatency.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biolatency.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biolatency.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biopattern.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biopattern.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biopattern.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biosnoop.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biosnoop.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biosnoop.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biostacks.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biostacks.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
biostacks.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bitesize.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bitesize.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bitesize.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
bits.bpf.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
blk_types.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cachestat.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cachestat.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
core_fixes.bpf.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cpudist.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cpudist.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cpudist.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cpufreq.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cpufreq.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cpufreq.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
drsnoop.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
drsnoop.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
drsnoop.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
drsnoop_example.txt Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
errno_helpers.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
errno_helpers.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
execsnoop.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
execsnoop.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
execsnoop.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
exitsnoop.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
exitsnoop.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
exitsnoop.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
filelife.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
filelife.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
filelife.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
filetop.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
filetop.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
filetop.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fsdist.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fsdist.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fsdist.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fsslower.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fsslower.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fsslower.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
funclatency.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
funclatency.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
funclatency.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
gethostlatency.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
gethostlatency.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
gethostlatency.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
hardirqs.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
hardirqs.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
hardirqs.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
kernel.config Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
klockstat.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
klockstat.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
klockstat.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ksnoop.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ksnoop.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ksnoop.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
llcstat.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
llcstat.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
llcstat.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
map_helpers.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
map_helpers.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
maps.bpf.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mountsnoop.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mountsnoop.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
mountsnoop.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
numamove.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
numamove.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
offcputime.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
offcputime.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
offcputime.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
oomkill.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
oomkill.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
oomkill.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
opensnoop.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
opensnoop.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
opensnoop.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
readahead.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
readahead.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
readahead.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
runqlat.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
runqlat.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
runqlat.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
runqlen.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
runqlen.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
runqlen.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
runqslower.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
runqslower.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
runqslower.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
runqslower_example.txt Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
softirqs.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
softirqs.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
softirqs.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
solisten.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
solisten.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
solisten.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stat.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
statsnoop.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
statsnoop.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
statsnoop.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
syscall_helpers.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
syscall_helpers.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
syscount.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
syscount.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
syscount.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcpconnect.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcpconnect.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcpconnect.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcpconnlat.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcpconnlat.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcpconnlat.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcprtt.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcprtt.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcprtt.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcpsynbl.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcpsynbl.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
tcpsynbl.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
trace_helpers.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
trace_helpers.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
uprobe_helpers.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
uprobe_helpers.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vfsstat.bpf.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vfsstat.c Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
vfsstat.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago

README.md

Building

To build libbpf-based tools, simply run make. This will build all the listed tools/applications. All the build artifacts, by default, go into .output subdirectory to keep source code and build artifacts completely separate. The only exception is resulting tool binaries, which are put in a current directory. make clean will clean up all the build artifacts, including generated binaries.

Given that the libbpf package might not be available across wide variety of distributions, all libbpf-based tools are linked statically against a version of libbpf that BCC links against (from submodule under src/cc/libbpf). This results in binaries with minimal amount of dependencies (libc, libelf, and libz are linked dynamically, though, given their widespread availability). If your build fails because the libbpf submodule is outdated, try running git submodule update --init --recursive.

Tools are expected to follow a simple naming convention:

  • .c contains userspace C code of a tool.
  • .bpf.c contains BPF C code, which gets compiled into BPF ELF file. This ELF file is used to generate BPF skeleton .skel.h, which is subsequently is included from .c.
  • .h can optionally contain any types and constants, shared by both BPF and userspace sides of a tool.

For such cases, simply adding name to Makefile's APPS variable will ensure this tool is built alongside others.

For more complicated applications, some extra Makefile rules might need to be created. For such cases, it is advised to put application into a dedicated subdirectory and link it from main Makefile.

vmlinux.h generation

vmlinux.h contains all kernel types, both exported and internal-only. BPF CO-RE-based applications are expected to include this file in their BPF program C source code to avoid dependency on kernel headers package.

For more reproducible builds, vmlinux.h header file is pre-generated and checked in along the other sources. This is done to avoid dependency on specific user/build server's kernel configuration, because vmlinux.h generation depends on having a kernel with BTF type information built-in (which is enabled by CONFIG_DEBUG_INFO_BTF=y Kconfig option See below).

vmlinux.h is generated from upstream Linux version at particular minor version tag. E.g., vmlinux_505.h is generated from v5.5 tag. Exact set of types available in compiled kernel depends on configuration used to compile it. To generate present vmlinux.h header, default configuration was used, with only extra CONFIG_DEBUG_INFO_BTF=y option enabled.

Given different kernel version can have incompatible type definitions, it might be important to use vmlinux.h of a specific kernel version as a "base" version of header. To that extent, all vmlinux.h headers are versioned by appending suffix to a file name. There is always a symbolic link vmlinux.h, that points to whichever version is deemed to be default (usually, latest).

bpftool

bpftool is a universal tool used for inspection of BPF resources, as well as providing various extra BPF-related facilities, like code-generation of BPF program skeletons. The latter functionality is heavily used by these tools to load and interact with BPF programs.

Given bpftool package can't yet be expected to be available widely across many distributions, bpftool binary is checked in into BCC repository in bin/ subdirectory. Once bpftool package is more widely available, this can be changed in favor of using pre-packaged version of bpftool.

Re-compiling your Kernel with CONFIG_DEBUG_INFO_BTF=y

libbpf probes to see if your sys fs exports the file /sys/kernel/btf/vmlinux (from Kernel 5.5+) or if you have the ELF version in your system code Please note the ELF file could exist without the BTF info in it. Your Kconfig should contain the options below

  1. Compile options
CONFIG_DEBUG_INFO_BTF=y
CONFIG_DEBUG_INFO=y
  1. Also, make sure that you have pahole 1.13 (or preferably 1.16+) during the kernel build (it comes from dwarves package). Without it, BTF won't be generated, and on older kernels you'd get only warning, but still would build kernel successfully