Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / tools / bpf / bpftool / Documentation / bpftool-iter.rst
blob2e5d81c906dc63401b9d12a9ef7285dfc6c7179a
1 .. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
3 ============
4 bpftool-iter
5 ============
6 -------------------------------------------------------------------------------
7 tool to create BPF iterators
8 -------------------------------------------------------------------------------
10 :Manual section: 8
12 .. include:: substitutions.rst
14 SYNOPSIS
15 ========
17 **bpftool** [*OPTIONS*] **iter** *COMMAND*
19 *OPTIONS* := { |COMMON_OPTIONS| }
21 *COMMANDS* := { **pin** | **help** }
23 ITER COMMANDS
24 =============
26 | **bpftool** **iter pin** *OBJ* *PATH* [**map** *MAP*]
27 | **bpftool** **iter help**
29 | *OBJ* := /a/file/of/bpf_iter_target.o
30 | *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
32 DESCRIPTION
33 ===========
34 bpftool iter pin *OBJ* *PATH* [map *MAP*]
35     A bpf iterator combines a kernel iterating of particular kernel data (e.g.,
36     tasks, bpf_maps, etc.) and a bpf program called for each kernel data object
37     (e.g., one task, one bpf_map, etc.). User space can *read* kernel iterator
38     output through *read()* syscall.
40     The *pin* command creates a bpf iterator from *OBJ*, and pin it to *PATH*.
41     The *PATH* should be located in *bpffs* mount. It must not contain a dot
42     character ('.'), which is reserved for future extensions of *bpffs*.
44     Map element bpf iterator requires an additional parameter *MAP* so bpf
45     program can iterate over map elements for that map. User can have a bpf
46     program in kernel to run with each map element, do checking, filtering,
47     aggregation, etc. without copying data to user space.
49     User can then *cat PATH* to see the bpf iterator output.
51 bpftool iter help
52     Print short help message.
54 OPTIONS
55 =======
56 .. include:: common_options.rst
58 EXAMPLES
59 ========
60 **# bpftool iter pin bpf_iter_netlink.o /sys/fs/bpf/my_netlink**
64    Create a file-based bpf iterator from bpf_iter_netlink.o and pin it
65    to /sys/fs/bpf/my_netlink
67 **# bpftool iter pin bpf_iter_hashmap.o /sys/fs/bpf/my_hashmap map id 20**
71    Create a file-based bpf iterator from bpf_iter_hashmap.o and map with
72    id 20, and pin it to /sys/fs/bpf/my_hashmap