The "SEE ALSO" sections of bpftool's manual pages refer to bpf(2), bpf-helpers(7), then all existing bpftool man pages (save the current one). This leads to nearly-identical lists being duplicated in all manual pages. Ideally, when a new page is created, all lists should be updated accordingly, but this has led to omissions and inconsistencies multiple times in the past. Let's take it out of the RST files and generate the "SEE ALSO" sections automatically in the Makefile when generating the man pages. The lists are not really useful in the RST anyway because all other pages are available in the same directory. v3: - Fix conflict with a previous patchset that introduced RST2MAN_OPTS variable passed to rst2man. v2: - Use "echo -n" instead of "printf" in Makefile, to avoid any risk of passing a format string directly to the command. Signed-off-by: Quentin Monnet <quentin@isovalent.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andriin@fb.com> Link: https://lore.kernel.org/bpf/20200910203935.25304-1-quentin@isovalent.com
71 lines
2.0 KiB
ReStructuredText
71 lines
2.0 KiB
ReStructuredText
============
|
|
bpftool-iter
|
|
============
|
|
-------------------------------------------------------------------------------
|
|
tool to create BPF iterators
|
|
-------------------------------------------------------------------------------
|
|
|
|
:Manual section: 8
|
|
|
|
SYNOPSIS
|
|
========
|
|
|
|
**bpftool** [*OPTIONS*] **iter** *COMMAND*
|
|
|
|
*COMMANDS* := { **pin** | **help** }
|
|
|
|
ITER COMMANDS
|
|
===================
|
|
|
|
| **bpftool** **iter pin** *OBJ* *PATH* [**map** *MAP*]
|
|
| **bpftool** **iter help**
|
|
|
|
|
| *OBJ* := /a/file/of/bpf_iter_target.o
|
|
| *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
|
|
|
|
DESCRIPTION
|
|
===========
|
|
**bpftool iter pin** *OBJ* *PATH* [**map** *MAP*]
|
|
A bpf iterator combines a kernel iterating of
|
|
particular kernel data (e.g., tasks, bpf_maps, etc.)
|
|
and a bpf program called for each kernel data object
|
|
(e.g., one task, one bpf_map, etc.). User space can
|
|
*read* kernel iterator output through *read()* syscall.
|
|
|
|
The *pin* command creates a bpf iterator from *OBJ*,
|
|
and pin it to *PATH*. The *PATH* should be located
|
|
in *bpffs* mount. It must not contain a dot
|
|
character ('.'), which is reserved for future extensions
|
|
of *bpffs*.
|
|
|
|
Map element bpf iterator requires an additional parameter
|
|
*MAP* so bpf program can iterate over map elements for
|
|
that map. User can have a bpf program in kernel to run
|
|
with each map element, do checking, filtering, aggregation,
|
|
etc. without copying data to user space.
|
|
|
|
User can then *cat PATH* to see the bpf iterator output.
|
|
|
|
**bpftool iter help**
|
|
Print short help message.
|
|
|
|
OPTIONS
|
|
=======
|
|
.. include:: common_options.rst
|
|
|
|
EXAMPLES
|
|
========
|
|
**# bpftool iter pin bpf_iter_netlink.o /sys/fs/bpf/my_netlink**
|
|
|
|
::
|
|
|
|
Create a file-based bpf iterator from bpf_iter_netlink.o and pin it
|
|
to /sys/fs/bpf/my_netlink
|
|
|
|
**# bpftool iter pin bpf_iter_hashmap.o /sys/fs/bpf/my_hashmap map id 20**
|
|
|
|
::
|
|
|
|
Create a file-based bpf iterator from bpf_iter_hashmap.o and map with
|
|
id 20, and pin it to /sys/fs/bpf/my_hashmap
|