summaryrefslogtreecommitdiff
path: root/tools/bpf/bpftool/Documentation/bpftool-iter.rst
blob: 2e5d81c906dc63401b9d12a9ef7285dfc6c7179a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
.. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

============
bpftool-iter
============
-------------------------------------------------------------------------------
tool to create BPF iterators
-------------------------------------------------------------------------------

:Manual section: 8

.. include:: substitutions.rst

SYNOPSIS
========

**bpftool** [*OPTIONS*] **iter** *COMMAND*

*OPTIONS* := { |COMMON_OPTIONS| }

*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