android_kernel_motorola_sm6375/samples/bpf
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Daniel T. Lee ceff135b9d samples: bpf: Fix lwt_len_hist reusing previous BPF map
[ Upstream commit 0afe0a998c40085a6342e1aeb4c510cccba46caf ]

Currently, lwt_len_hist's map lwt_len_hist_map is uses pinning, and the
map isn't cleared on test end. This leds to reuse of that map for
each test, which prevents the results of the test from being accurate.

This commit fixes the problem by removing of pinned map from bpffs.
Also, this commit add the executable permission to shell script
files.

Fixes: f74599f7c5 ("bpf: Add tests and samples for LWT-BPF")
Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20201124090310.24374-7-danieltimlee@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-12-30 11:51:12 +01:00
..
.gitignore samples: bpf: add ibumad sample to .gitignore 2019-05-24 19:58:03 -07:00
asm_goto_workaround.h samples/bpf: Add a workaround for asm_inline 2019-10-03 17:37:11 +02:00
bpf_insn.h
bpf_load.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-06-17 20:20:36 -07:00
bpf_load.h
cookie_uid_helper_example.c
cpustat_kern.c
cpustat_user.c
do_hbm_test.sh bpf: Add support for fq's EDT to HBM 2019-07-03 15:03:00 +02:00
fds_example.c bpf: Fix fds_example SIGSEGV error 2020-08-19 08:16:03 +02:00
hash_func01.h
hbm.c bpf: Add support for fq's EDT to HBM 2019-07-03 15:03:00 +02:00
hbm.h bpf: Add more stats to HBM 2019-05-31 16:41:29 -07:00
hbm_edt_kern.c bpf: Add support for fq's EDT to HBM 2019-07-03 15:03:00 +02:00
hbm_kern.h bpf: Add support for fq's EDT to HBM 2019-07-03 15:03:00 +02:00
hbm_out_kern.c bpf: Add more stats to HBM 2019-05-31 16:41:29 -07:00
ibumad_kern.c samples: bpf: Remove bpf_debug macro in favor of bpf_printk 2019-06-24 18:18:30 -07:00
ibumad_user.c samples: bpf: refactor header include path 2019-06-18 00:28:36 +02:00
lathist_kern.c
lathist_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
lwt_len_hist.sh samples: bpf: Fix lwt_len_hist reusing previous BPF map 2020-12-30 11:51:12 +01:00
lwt_len_hist_kern.c
lwt_len_hist_user.c samples: bpf: Fix build error 2020-06-03 08:21:15 +02:00
Makefile samples/bpf: Set -fno-stack-protector when building BPF programs 2020-02-24 08:36:36 +01:00
map_perf_test_kern.c
map_perf_test_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
offwaketime_kern.c
offwaketime_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
parse_ldabs.c
parse_simple.c
parse_varlen.c
README.rst
run_cookie_uid_helper_example.sh
sampleip_kern.c
sampleip_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
sock_example.c
sock_example.h
sock_flags_kern.c
sockex1_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
sockex1_user.c samples: bpf: refactor header include path 2019-06-18 00:28:36 +02:00
sockex2_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
sockex2_user.c samples: bpf: refactor header include path 2019-06-18 00:28:36 +02:00
sockex3_kern.c
sockex3_user.c
spintest_kern.c
spintest_user.c
syscall_nrs.c samples: bpf: syscall_nrs: use mmap2 if defined 2019-08-21 14:31:38 +02:00
syscall_tp_kern.c samples: bpf: fix syscall_tp due to unused syscall 2020-01-12 12:21:26 +01:00
syscall_tp_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
task_fd_query_kern.c
task_fd_query_user.c samples/bpf: Fix build for task_fd_query_user.c 2019-10-03 16:27:03 +02:00
tc_l2_redirect.sh
tc_l2_redirect_kern.c
tc_l2_redirect_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
tcbpf1_kern.c
tcp_basertt_kern.c samples: bpf: Do not define bpf_printk macro 2019-05-24 13:47:17 -07:00
tcp_bpf.readme samples/bpf: fix tcp_bpf.readme detach command 2019-07-03 16:52:02 +02:00
tcp_bufs_kern.c samples: bpf: Do not define bpf_printk macro 2019-05-24 13:47:17 -07:00
tcp_clamp_kern.c samples: bpf: Do not define bpf_printk macro 2019-05-24 13:47:17 -07:00
tcp_cong_kern.c samples: bpf: Do not define bpf_printk macro 2019-05-24 13:47:17 -07:00
tcp_dumpstats_kern.c samples/bpf: add sample program that periodically dumps TCP stats 2019-07-03 16:52:02 +02:00
tcp_iw_kern.c samples: bpf: Do not define bpf_printk macro 2019-05-24 13:47:17 -07:00
tcp_rwnd_kern.c samples: bpf: Do not define bpf_printk macro 2019-05-24 13:47:17 -07:00
tcp_synrto_kern.c samples: bpf: Do not define bpf_printk macro 2019-05-24 13:47:17 -07:00
tcp_tos_reflect_kern.c samples: bpf: Do not define bpf_printk macro 2019-05-24 13:47:17 -07:00
test_cgrp2_array_pin.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
test_cgrp2_attach.c
test_cgrp2_sock.c
test_cgrp2_sock.sh
test_cgrp2_sock2.c
test_cgrp2_sock2.sh
test_cgrp2_tc.sh
test_cgrp2_tc_kern.c
test_cls_bpf.sh
test_current_task_under_cgroup_kern.c
test_current_task_under_cgroup_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
test_ipip.sh
test_lru_dist.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
test_lwt_bpf.c
test_lwt_bpf.sh samples: bpf: Fix lwt_len_hist reusing previous BPF map 2020-12-30 11:51:12 +01:00
test_map_in_map_kern.c
test_map_in_map_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
test_overhead_kprobe_kern.c
test_overhead_raw_tp_kern.c
test_overhead_tp_kern.c
test_overhead_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
test_override_return.sh
test_probe_write_user_kern.c
test_probe_write_user_user.c
trace_event_kern.c
trace_event_user.c samples: bpf: Replace symbol compare of trace_event 2020-01-12 12:21:26 +01:00
trace_output_kern.c
trace_output_user.c samples/bpf: switch trace_output sample to perf_buffer API 2019-07-23 16:05:42 -07:00
tracex1_kern.c
tracex1_user.c
tracex2_kern.c
tracex2_user.c
tracex3_kern.c
tracex3_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
tracex4_kern.c
tracex4_user.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
tracex5_kern.c samples: bpf: syscall_nrs: use mmap2 if defined 2019-08-21 14:31:38 +02:00
tracex5_user.c
tracex6_kern.c
tracex6_user.c
tracex7_kern.c
tracex7_user.c
xdp1_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
xdp1_user.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2019-06-20 00:06:27 -04:00
xdp2_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
xdp2skb_meta.sh
xdp2skb_meta_kern.c
xdp_adjust_tail_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
xdp_adjust_tail_user.c samples: bpf: make the use of xdp samples consistent 2019-06-26 15:39:15 +02:00
xdp_fwd_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
xdp_fwd_user.c samples/bpf: make xdp_fwd more practically usable via devmap lookup 2019-08-09 18:05:03 +02:00
xdp_monitor_kern.c
xdp_monitor_user.c bpf, xdp, samples: Fix null pointer dereference in *_user code 2020-06-30 15:36:55 -04:00
xdp_redirect_cpu_kern.c samples/bpf: xdp_redirect_cpu: Set MAX_CPUS according to NR_CPUS 2020-06-30 15:36:55 -04:00
xdp_redirect_cpu_user.c bpf, xdp, samples: Fix null pointer dereference in *_user code 2020-06-30 15:36:55 -04:00
xdp_redirect_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
xdp_redirect_map_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
xdp_redirect_map_user.c samples: bpf: make the use of xdp samples consistent 2019-06-26 15:39:15 +02:00
xdp_redirect_user.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-07-08 19:48:57 -07:00
xdp_router_ipv4_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
xdp_router_ipv4_user.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2019-06-20 00:06:27 -04:00
xdp_rxq_info_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
xdp_rxq_info_user.c bpf, xdp, samples: Fix null pointer dereference in *_user code 2020-06-30 15:36:55 -04:00
xdp_sample_pkts_kern.c samples: bpf: Do not define bpf_printk macro 2019-05-24 13:47:17 -07:00
xdp_sample_pkts_user.c samples/bpf: convert xdp_sample_pkts_user to perf_buffer API 2019-07-23 16:05:42 -07:00
xdp_tx_iptunnel_common.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206 2019-05-30 11:29:53 -07:00
xdp_tx_iptunnel_kern.c samples: bpf: update map definition to new syntax BTF-defined map 2020-01-26 10:00:58 +01:00
xdp_tx_iptunnel_user.c samples: bpf: make the use of xdp samples consistent 2019-06-26 15:39:15 +02:00
xdpsock_user.c samples/bpf: Fix possible deadlock in xdpsock 2020-11-05 11:43:17 +01:00

eBPF sample programs
====================

This directory contains a test stubs, verifier test-suite and examples
for using eBPF. The examples use libbpf from tools/lib/bpf.

Build dependencies
==================

Compiling requires having installed:
 * clang >= version 3.4.0
 * llvm >= version 3.7.1

Note that LLVM's tool 'llc' must support target 'bpf', list version
and supported targets with command: ``llc --version``

Kernel headers
--------------

There are usually dependencies to header files of the current kernel.
To avoid installing devel kernel headers system wide, as a normal
user, simply call::

 make headers_install

This will creates a local "usr/include" directory in the git/build top
level directory, that the make system automatically pickup first.

Compiling
=========

For building the BPF samples, issue the below command from the kernel
top level directory::

 make samples/bpf/

Do notice the "/" slash after the directory name.

It is also possible to call make from this directory.  This will just
hide the the invocation of make as above with the appended "/".

Manually compiling LLVM with 'bpf' support
------------------------------------------

Since version 3.7.0, LLVM adds a proper LLVM backend target for the
BPF bytecode architecture.

By default llvm will build all non-experimental backends including bpf.
To generate a smaller llc binary one can use::

 -DLLVM_TARGETS_TO_BUILD="BPF"

Quick sniplet for manually compiling LLVM and clang
(build dependencies are cmake and gcc-c++)::

 $ git clone http://llvm.org/git/llvm.git
 $ cd llvm/tools
 $ git clone --depth 1 http://llvm.org/git/clang.git
 $ cd ..; mkdir build; cd build
 $ cmake .. -DLLVM_TARGETS_TO_BUILD="BPF;X86"
 $ make -j $(getconf _NPROCESSORS_ONLN)

It is also possible to point make to the newly compiled 'llc' or
'clang' command via redefining LLC or CLANG on the make command line::

 make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang

Cross compiling samples
-----------------------
In order to cross-compile, say for arm64 targets, export CROSS_COMPILE and ARCH
environment variables before calling make. This will direct make to build
samples for the cross target.

export ARCH=arm64
export CROSS_COMPILE="aarch64-linux-gnu-"
make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang