~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/bpf/bpftool/Documentation/bpftool-prog.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/bpf/bpftool/Documentation/bpftool-prog.rst (Version linux-6.12-rc7) and /tools/bpf/bpftool/Documentation/bpftool-prog.rst (Version linux-6.2.16)


  1 .. SPDX-License-Identifier: (GPL-2.0-only OR B      1 .. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2                                                     2 
  3 ================                                    3 ================
  4 bpftool-prog                                        4 bpftool-prog
  5 ================                                    5 ================
  6 ----------------------------------------------      6 -------------------------------------------------------------------------------
  7 tool for inspection and simple manipulation of      7 tool for inspection and simple manipulation of eBPF progs
  8 ----------------------------------------------      8 -------------------------------------------------------------------------------
  9                                                     9 
 10 :Manual section: 8                                 10 :Manual section: 8
 11                                                    11 
 12 .. include:: substitutions.rst                     12 .. include:: substitutions.rst
 13                                                    13 
 14 SYNOPSIS                                           14 SYNOPSIS
 15 ========                                           15 ========
 16                                                    16 
 17 **bpftool** [*OPTIONS*] **prog** *COMMAND*     !!  17         **bpftool** [*OPTIONS*] **prog** *COMMAND*
 18                                                    18 
 19 *OPTIONS* := { |COMMON_OPTIONS| |              !!  19         *OPTIONS* := { |COMMON_OPTIONS| |
 20 { **-f** | **--bpffs** } | { **-m** | **--mapc !!  20         { **-f** | **--bpffs** } | { **-m** | **--mapcompat** } | { **-n** | **--nomount** } |
 21 { **-L** | **--use-loader** } }                !!  21         { **-L** | **--use-loader** } }
 22                                                !!  22 
 23 *COMMANDS* :=                                  !!  23         *COMMANDS* :=
 24 { **show** | **list** | **dump xlated** | **du !!  24         { **show** | **list** | **dump xlated** | **dump jited** | **pin** | **load** |
 25 **loadall** | **help** }                       !!  25         **loadall** | **help** }
 26                                                    26 
 27 PROG COMMANDS                                      27 PROG COMMANDS
 28 =============                                      28 =============
 29                                                    29 
 30 | **bpftool** **prog** { **show** | **list** } !!  30 |       **bpftool** **prog** { **show** | **list** } [*PROG*]
 31 | **bpftool** **prog dump xlated** *PROG* [{ * !!  31 |       **bpftool** **prog dump xlated** *PROG* [{**file** *FILE* | **opcodes** | **visual** | **linum**}]
 32 | **bpftool** **prog dump jited**  *PROG* [{ * !!  32 |       **bpftool** **prog dump jited**  *PROG* [{**file** *FILE* | **opcodes** | **linum**}]
 33 | **bpftool** **prog pin** *PROG* *FILE*       !!  33 |       **bpftool** **prog pin** *PROG* *FILE*
 34 | **bpftool** **prog** { **load** | **loadall* !!  34 |       **bpftool** **prog** { **load** | **loadall** } *OBJ* *PATH* [**type** *TYPE*] [**map** {**idx** *IDX* | **name** *NAME*} *MAP*] [**dev** *NAME*] [**pinmaps** *MAP_DIR*] [**autoattach**]
 35 | **bpftool** **prog attach** *PROG* *ATTACH_T !!  35 |       **bpftool** **prog attach** *PROG* *ATTACH_TYPE* [*MAP*]
 36 | **bpftool** **prog detach** *PROG* *ATTACH_T !!  36 |       **bpftool** **prog detach** *PROG* *ATTACH_TYPE* [*MAP*]
 37 | **bpftool** **prog tracelog**                !!  37 |       **bpftool** **prog tracelog**
 38 | **bpftool** **prog run** *PROG* **data_in**  !!  38 |       **bpftool** **prog run** *PROG* **data_in** *FILE* [**data_out** *FILE* [**data_size_out** *L*]] [**ctx_in** *FILE* [**ctx_out** *FILE* [**ctx_size_out** *M*]]] [**repeat** *N*]
 39 | **bpftool** **prog profile** *PROG* [**durat !!  39 |       **bpftool** **prog profile** *PROG* [**duration** *DURATION*] *METRICs*
 40 | **bpftool** **prog help**                    !!  40 |       **bpftool** **prog help**
 41 |                                                  41 |
 42 | *MAP* := { **id** *MAP_ID* | **pinned** *FIL !!  42 |       *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
 43 | *PROG* := { **id** *PROG_ID* | **pinned** *F !!  43 |       *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* | **name** *PROG_NAME* }
 44 | *TYPE* := {                                  !!  44 |       *TYPE* := {
 45 |     **socket** | **kprobe** | **kretprobe**  !!  45 |               **socket** | **kprobe** | **kretprobe** | **classifier** | **action** |
 46 |     **tracepoint** | **raw_tracepoint** | ** !!  46 |               **tracepoint** | **raw_tracepoint** | **xdp** | **perf_event** | **cgroup/skb** |
 47 |     **cgroup/sock** | **cgroup/dev** | **lwt !!  47 |               **cgroup/sock** | **cgroup/dev** | **lwt_in** | **lwt_out** | **lwt_xmit** |
 48 |     **lwt_seg6local** | **sockops** | **sk_s !!  48 |               **lwt_seg6local** | **sockops** | **sk_skb** | **sk_msg** | **lirc_mode2** |
 49 |     **cgroup/bind4** | **cgroup/bind6** | ** !!  49 |               **cgroup/bind4** | **cgroup/bind6** | **cgroup/post_bind4** | **cgroup/post_bind6** |
 50 |     **cgroup/connect4** | **cgroup/connect6* !!  50 |               **cgroup/connect4** | **cgroup/connect6** | **cgroup/getpeername4** | **cgroup/getpeername6** |
 51 |     **cgroup/getpeername4** | **cgroup/getpe !!  51 |               **cgroup/getsockname4** | **cgroup/getsockname6** | **cgroup/sendmsg4** | **cgroup/sendmsg6** |
 52 |     **cgroup/getsockname4** | **cgroup/getso !!  52 |               **cgroup/recvmsg4** | **cgroup/recvmsg6** | **cgroup/sysctl** |
 53 |     **cgroup/sendmsg4** | **cgroup/sendmsg6* !!  53 |               **cgroup/getsockopt** | **cgroup/setsockopt** | **cgroup/sock_release** |
 54 |     **cgroup/recvmsg4** | **cgroup/recvmsg6* !!  54 |               **struct_ops** | **fentry** | **fexit** | **freplace** | **sk_lookup**
 55 |     **cgroup/getsockopt** | **cgroup/setsock !!  55 |       }
 56 |     **struct_ops** | **fentry** | **fexit**  !!  56 |       *ATTACH_TYPE* := {
 57 | }                                            !!  57 |               **sk_msg_verdict** | **sk_skb_verdict** | **sk_skb_stream_verdict** |
 58 | *ATTACH_TYPE* := {                           !!  58 |               **sk_skb_stream_parser** | **flow_dissector**
 59 |     **sk_msg_verdict** | **sk_skb_verdict**  !!  59 |       }
 60 |     **sk_skb_stream_parser** | **flow_dissec !!  60 |       *METRICs* := {
 61 | }                                            !!  61 |               **cycles** | **instructions** | **l1d_loads** | **llc_misses** |
 62 | *METRICs* := {                               !!  62 |               **itlb_misses** | **dtlb_misses**
 63 |     **cycles** | **instructions** | **l1d_lo !!  63 |       }
 64 |     **itlb_misses** | **dtlb_misses**        << 
 65 | }                                            << 
 66                                                    64 
 67                                                    65 
 68 DESCRIPTION                                        66 DESCRIPTION
 69 ===========                                        67 ===========
 70 bpftool prog { show | list } [*PROG*]          !!  68         **bpftool prog { show | list }** [*PROG*]
 71     Show information about loaded programs.  I !!  69                   Show information about loaded programs.  If *PROG* is
 72     information only about given programs, oth !!  70                   specified show information only about given programs,
 73     currently loaded on the system. In case of !!  71                   otherwise list all programs currently loaded on the system.
 74     match several programs which will all be s !!  72                   In case of **tag** or **name**, *PROG* may match several
 75                                                !!  73                   programs which will all be shown.
 76     Output will start with program ID followed !!  74 
 77     named attributes (depending on kernel vers !!  75                   Output will start with program ID followed by program type and
 78                                                !!  76                   zero or more named attributes (depending on kernel version).
 79     Since Linux 5.1 the kernel can collect sta !!  77 
 80     the total time spent running the program,  !!  78                   Since Linux 5.1 the kernel can collect statistics on BPF
 81     run). If available, bpftool shows such sta !!  79                   programs (such as the total time spent running the program,
 82     not collect them by defaults, as it slight !!  80                   and the number of times it was run). If available, bpftool
 83     program run. Activation or deactivation of !!  81                   shows such statistics. However, the kernel does not collect
 84     **kernel.bpf_stats_enabled** sysctl knob.  !!  82                   them by defaults, as it slightly impacts performance on each
 85                                                !!  83                   program run. Activation or deactivation of the feature is
 86     Since Linux 5.8 bpftool is able to discove !!  84                   performed via the **kernel.bpf_stats_enabled** sysctl knob.
 87     that hold open file descriptors (FDs) agai !!  85 
 88     bpftool will automatically emit this infor !!  86                   Since Linux 5.8 bpftool is able to discover information about
 89                                                !!  87                   processes that hold open file descriptors (FDs) against BPF
 90 bpftool prog dump xlated *PROG* [{ file *FILE* !!  88                   programs. On such kernels bpftool will automatically emit this
 91     Dump eBPF instructions of the programs fro !!  89                   information as well.
 92     will be disassembled and printed to standa !!  90 
 93     format. In this case, **opcodes** controls !!  91         **bpftool prog dump xlated** *PROG* [{ **file** *FILE* | **opcodes** | **visual** | **linum** }]
 94     as well.                                   !!  92                   Dump eBPF instructions of the programs from the kernel. By
 95                                                !!  93                   default, eBPF will be disassembled and printed to standard
 96     In case of **tag** or **name**, *PROG* may !!  94                   output in human-readable format. In this case, **opcodes**
 97     will all be dumped.  However, if **file**  !!  95                   controls if raw opcodes should be printed as well.
 98     *PROG* must match a single program.        !!  96 
 99                                                !!  97                   In case of **tag** or **name**, *PROG* may match several
100     If **file** is specified, the binary image !!  98                   programs which will all be dumped.  However, if **file** or
101     *FILE*.                                    !!  99                   **visual** is specified, *PROG* must match a single program.
102                                                !! 100 
103     If **visual** is specified, control flow g !! 101                   If **file** is specified, the binary image will instead be
104     and eBPF instructions will be presented wi !! 102                   written to *FILE*.
105     output.                                    !! 103 
106                                                !! 104                   If **visual** is specified, control flow graph (CFG) will be
107     If the programs have line_info available,  !! 105                   built instead, and eBPF instructions will be presented with
108     displayed.  If **linum** is specified, the !! 106                   CFG in DOT format, on standard output.
109     column will also be displayed.             !! 107 
110                                                !! 108                   If the programs have line_info available, the source line will
111 bpftool prog dump jited  *PROG* [{ file *FILE* !! 109                   be displayed by default.  If **linum** is specified,
112     Dump jited image (host machine code) of th !! 110                   the filename, line number and line column will also be
113                                                !! 111                   displayed on top of the source line.
114     If *FILE* is specified image will be writt !! 112 
115     be disassembled and printed to stdout. *PR !! 113         **bpftool prog dump jited**  *PROG* [{ **file** *FILE* | **opcodes** | **linum** }]
116     when **file** is specified.                !! 114                   Dump jited image (host machine code) of the program.
117                                                !! 115 
118     **opcodes** controls if raw opcodes will b !! 116                   If *FILE* is specified image will be written to a file,
119                                                !! 117                   otherwise it will be disassembled and printed to stdout.
120     If the prog has line_info available, the s !! 118                   *PROG* must match a single program when **file** is specified.
121     **linum** is specified, the filename, line !! 119 
122     be displayed.                              !! 120                   **opcodes** controls if raw opcodes will be printed.
123                                                !! 121 
124 bpftool prog pin *PROG* *FILE*                 !! 122                   If the prog has line_info available, the source line will
125     Pin program *PROG* as *FILE*.              !! 123                   be displayed by default.  If **linum** is specified,
126                                                !! 124                   the filename, line number and line column will also be
127     Note: *FILE* must be located in *bpffs* mo !! 125                   displayed on top of the source line.
128     character ('.'), which is reserved for fut !! 126 
129                                                !! 127         **bpftool prog pin** *PROG* *FILE*
130 bpftool prog { load | loadall } *OBJ* *PATH* [ !! 128                   Pin program *PROG* as *FILE*.
131     Load bpf program(s) from binary *OBJ* and  !! 129 
132     load** pins only the first program from th !! 130                   Note: *FILE* must be located in *bpffs* mount. It must not
133     loadall** pins all programs from the *OBJ* !! 131                   contain a dot character ('.'), which is reserved for future
134     is optional, if not specified program type !! 132                   extensions of *bpffs*.
135     names. By default bpftool will create new  !! 133 
136     object being loaded.  **map** parameter al !! 134         **bpftool prog { load | loadall }** *OBJ* *PATH* [**type** *TYPE*] [**map** {**idx** *IDX* | **name** *NAME*} *MAP*] [**dev** *NAME*] [**pinmaps** *MAP_DIR*] [**autoattach**]
137     maps. It can be specified multiple times,  !! 135                   Load bpf program(s) from binary *OBJ* and pin as *PATH*.
138     *IDX* refers to index of the map to be rep !! 136                   **bpftool prog load** pins only the first program from the
139     from 0, while *NAME* allows to replace a m !! 137                   *OBJ* as *PATH*. **bpftool prog loadall** pins all programs
140     map to use, referring to it by **id** or t !! 138                   from the *OBJ* under *PATH* directory.
141     **offload_dev** *NAME* is specified progra !! 139                   **type** is optional, if not specified program type will be
142     networking device (offload). If **xdpmeta_ !! 140                   inferred from section names.
143     will become device-bound without offloadin !! 141                   By default bpftool will create new maps as declared in the ELF
144     metadata. Optional **pinmaps** argument ca !! 142                   object being loaded.  **map** parameter allows for the reuse
145     under *MAP_DIR* directory.                 !! 143                   of existing maps.  It can be specified multiple times, each
146                                                !! 144                   time for a different map.  *IDX* refers to index of the map
147     If **autoattach** is specified program wil !! 145                   to be replaced in the ELF file counting from 0, while *NAME*
148     case, only the link (representing the prog !! 146                   allows to replace a map by name.  *MAP* specifies the map to
149     pinned, not the program as such, so the pa !! 147                   use, referring to it by **id** or through a **pinned** file.
150     show -f**, only show in **bpftool link sho !! 148                   If **dev** *NAME* is specified program will be loaded onto
151     when bpftool (libbpf) is able to infer all !! 149                   given networking device (offload).
152     object file, in particular, it's not suppo !! 150                   Optional **pinmaps** argument can be provided to pin all
153     program does not support autoattach, bpfto !! 151                   maps under *MAP_DIR* directory.
154     for that program instead.                  !! 152 
155                                                !! 153                   If **autoattach** is specified program will be attached
156     Note: *PATH* must be located in *bpffs* mo !! 154                   before pin. In that case, only the link (representing the
157     character ('.'), which is reserved for fut !! 155                   program attached to its hook) is pinned, not the program as
158                                                !! 156                   such, so the path won't show in **bpftool prog show -f**,
159 bpftool prog attach *PROG* *ATTACH_TYPE* [*MAP !! 157                   only show in **bpftool link show -f**. Also, this only works
160     Attach bpf program *PROG* (with type speci !! 158                   when bpftool (libbpf) is able to infer all necessary
161     *ATTACH_TYPEs* require a *MAP* parameter,  !! 159                   information from the object file, in particular, it's not
162     *flow_dissector* which is attached to curr !! 160                   supported for all program types. If a program does not
163                                                !! 161                   support autoattach, bpftool falls back to regular pinning
164 bpftool prog detach *PROG* *ATTACH_TYPE* [*MAP !! 162                   for that program instead.
165     Detach bpf program *PROG* (with type speci !! 163 
166     *ATTACH_TYPEs* require a *MAP* parameter,  !! 164                   Note: *PATH* must be located in *bpffs* mount. It must not
167     *flow_dissector* which is detached from th !! 165                   contain a dot character ('.'), which is reserved for future
168                                                !! 166                   extensions of *bpffs*.
169 bpftool prog tracelog                          !! 167 
170     Dump the trace pipe of the system to the c !! 168         **bpftool prog attach** *PROG* *ATTACH_TYPE* [*MAP*]
171     stop printing. BPF programs can write to t !! 169                   Attach bpf program *PROG* (with type specified by
172     the **bpf_trace_printk**\ () helper. This  !! 170                   *ATTACH_TYPE*). Most *ATTACH_TYPEs* require a *MAP*
173     purposes. For streaming data from BPF prog !! 171                   parameter, with the exception of *flow_dissector* which is
174     perf events (see also **bpftool-map**\ (8) !! 172                   attached to current networking name space.
175                                                !! 173 
176 bpftool prog run *PROG* data_in *FILE* [data_o !! 174         **bpftool prog detach** *PROG* *ATTACH_TYPE* [*MAP*]
177     Run BPF program *PROG* in the kernel testi !! 175                   Detach bpf program *PROG* (with type specified by
178     meaning that the program works on the data !! 176                   *ATTACH_TYPE*). Most *ATTACH_TYPEs* require a *MAP*
179     user, and not on actual packets or monitor !! 177                   parameter, with the exception of *flow_dissector* which is
180     and duration for the test run are printed  !! 178                   detached from the current networking name space.
181                                                !! 179 
182     Input data is read from the *FILE* passed  !! 180         **bpftool prog tracelog**
183     is "**-**", input data is read from standa !! 181                   Dump the trace pipe of the system to the console (stdout).
184     is read from *FILE* passed with **ctx_in** !! 182                   Hit <Ctrl+C> to stop printing. BPF programs can write to this
185     read from standard input, but only if stan !! 183                   trace pipe at runtime with the **bpf_trace_printk**\ () helper.
186     for input data. If a *FILE* is passed with !! 184                   This should be used only for debugging purposes. For
187     written to that file. Similarly, output co !! 185                   streaming data from BPF programs to user space, one can use
188     passed with **ctx_out**. For both output f !! 186                   perf events (see also **bpftool-map**\ (8)).
189     print to the standard output (as plain tex !! 187 
190     passed). If output keywords are omitted, o !! 188         **bpftool prog run** *PROG* **data_in** *FILE* [**data_out** *FILE* [**data_size_out** *L*]] [**ctx_in** *FILE* [**ctx_out** *FILE* [**ctx_size_out** *M*]]] [**repeat** *N*]
191     discarded. Keywords **data_size_out** and  !! 189                   Run BPF program *PROG* in the kernel testing infrastructure
192     the size (in bytes) for the output buffers !! 190                   for BPF, meaning that the program works on the data and
193     default of 32 kB should be more than enoug !! 191                   context provided by the user, and not on actual packets or
194                                                !! 192                   monitored functions etc. Return value and duration for the
195     Keyword **repeat** is used to indicate the !! 193                   test run are printed out to the console.
196     perform. Note that output data and context !! 194 
197     the last of those runs. The duration print !! 195                   Input data is read from the *FILE* passed with **data_in**.
198     an average over all runs performed by the  !! 196                   If this *FILE* is "**-**", input data is read from standard
199                                                !! 197                   input. Input context, if any, is read from *FILE* passed with
200     Not all program types support test run. Am !! 198                   **ctx_in**. Again, "**-**" can be used to read from standard
201     them can take the **ctx_in**/**ctx_out** a !! 199                   input, but only if standard input is not already in use for
202     perform checks on program types.           !! 200                   input data. If a *FILE* is passed with **data_out**, output
203                                                !! 201                   data is written to that file. Similarly, output context is
204 bpftool prog profile *PROG* [duration *DURATIO !! 202                   written to the *FILE* passed with **ctx_out**. For both
205     Profile *METRICs* for bpf program *PROG* f !! 203                   output flows, "**-**" can be used to print to the standard
206     user hits <Ctrl+C>. *DURATION* is optional !! 204                   output (as plain text, or JSON if relevant option was
207     the profiling will run up to **UINT_MAX**  !! 205                   passed). If output keywords are omitted, output data and
                                                   >> 206                   context are discarded. Keywords **data_size_out** and
                                                   >> 207                   **ctx_size_out** are used to pass the size (in bytes) for the
                                                   >> 208                   output buffers to the kernel, although the default of 32 kB
                                                   >> 209                   should be more than enough for most cases.
                                                   >> 210 
                                                   >> 211                   Keyword **repeat** is used to indicate the number of
                                                   >> 212                   consecutive runs to perform. Note that output data and
                                                   >> 213                   context printed to files correspond to the last of those
                                                   >> 214                   runs. The duration printed out at the end of the runs is an
                                                   >> 215                   average over all runs performed by the command.
                                                   >> 216 
                                                   >> 217                   Not all program types support test run. Among those which do,
                                                   >> 218                   not all of them can take the **ctx_in**/**ctx_out**
                                                   >> 219                   arguments. bpftool does not perform checks on program types.
                                                   >> 220 
                                                   >> 221         **bpftool prog profile** *PROG* [**duration** *DURATION*] *METRICs*
                                                   >> 222                   Profile *METRICs* for bpf program *PROG* for *DURATION*
                                                   >> 223                   seconds or until user hits <Ctrl+C>. *DURATION* is optional.
                                                   >> 224                   If *DURATION* is not specified, the profiling will run up to
                                                   >> 225                   **UINT_MAX** seconds.
208                                                   226 
209 bpftool prog help                              !! 227         **bpftool prog help**
210     Print short help message.                  !! 228                   Print short help message.
211                                                   229 
212 OPTIONS                                           230 OPTIONS
213 =======                                           231 =======
214 .. include:: common_options.rst                !! 232         .. include:: common_options.rst
215                                                   233 
216 -f, --bpffs                                    !! 234         -f, --bpffs
217     When showing BPF programs, show file names !! 235                   When showing BPF programs, show file names of pinned
218                                                !! 236                   programs.
219 -m, --mapcompat                                !! 237 
220     Allow loading maps with unknown map defini !! 238         -m, --mapcompat
221                                                !! 239                   Allow loading maps with unknown map definitions.
222 -n, --nomount                                  !! 240 
223     Do not automatically attempt to mount any  !! 241         -n, --nomount
224     tracefs or BPF virtual file system) when n !! 242                   Do not automatically attempt to mount any virtual file system
225                                                !! 243                   (such as tracefs or BPF virtual file system) when necessary.
226 -L, --use-loader                               !! 244 
227     Load program as a "loader" program. This i !! 245         -L, --use-loader
228     of such programs. When this option is in u !! 246                   Load program as a "loader" program. This is useful to debug
229     programs from the object file into the ker !! 247                   the generation of such programs. When this option is in
230     (therefore, the *PATH* must not be provide !! 248                   use, bpftool attempts to load the programs from the object
231                                                !! 249                   file into the kernel, but does not pin them (therefore, the
232     When combined with the **-d**\ \|\ **--deb !! 250                   *PATH* must not be provided).
233     messages are generated, and the execution  !! 251 
234     the **bpf_trace_printk**\ () helper to log !! 252                   When combined with the **-d**\ \|\ **--debug** option,
235     creating the maps, and loading the program !! 253                   additional debug messages are generated, and the execution
236     as a way to dump those messages).          !! 254                   of the loader program will use the **bpf_trace_printk**\ ()
                                                   >> 255                   helper to log each step of loading BTF, creating the maps,
                                                   >> 256                   and loading the programs (see **bpftool prog tracelog** as
                                                   >> 257                   a way to dump those messages).
237                                                   258 
238 EXAMPLES                                          259 EXAMPLES
239 ========                                          260 ========
240 **# bpftool prog show**                           261 **# bpftool prog show**
241                                                   262 
242 ::                                                263 ::
243                                                   264 
244     10: xdp  name some_prog  tag 005a3d2123620    265     10: xdp  name some_prog  tag 005a3d2123620c8b  gpl run_time_ns 81632 run_cnt 10
245             loaded_at 2017-09-29T20:11:00+0000    266             loaded_at 2017-09-29T20:11:00+0000  uid 0
246             xlated 528B  jited 370B  memlock 4    267             xlated 528B  jited 370B  memlock 4096B  map_ids 10
247             pids systemd(1)                       268             pids systemd(1)
248                                                   269 
249 **# bpftool --json --pretty prog show**           270 **# bpftool --json --pretty prog show**
250                                                   271 
251 ::                                                272 ::
252                                                   273 
253     [{                                            274     [{
254             "id": 10,                             275             "id": 10,
255             "type": "xdp",                        276             "type": "xdp",
256             "tag": "005a3d2123620c8b",            277             "tag": "005a3d2123620c8b",
257             "gpl_compatible": true,               278             "gpl_compatible": true,
258             "run_time_ns": 81632,                 279             "run_time_ns": 81632,
259             "run_cnt": 10,                        280             "run_cnt": 10,
260             "loaded_at": 1506715860,              281             "loaded_at": 1506715860,
261             "uid": 0,                             282             "uid": 0,
262             "bytes_xlated": 528,                  283             "bytes_xlated": 528,
263             "jited": true,                        284             "jited": true,
264             "bytes_jited": 370,                   285             "bytes_jited": 370,
265             "bytes_memlock": 4096,                286             "bytes_memlock": 4096,
266             "map_ids": [10                        287             "map_ids": [10
267             ],                                    288             ],
268             "pids": [{                            289             "pids": [{
269                     "pid": 1,                     290                     "pid": 1,
270                     "comm": "systemd"             291                     "comm": "systemd"
271                 }                                 292                 }
272             ]                                     293             ]
273         }                                         294         }
274     ]                                             295     ]
275                                                   296 
276 |                                                 297 |
277 | **# bpftool prog dump xlated id 10 file /tmp    298 | **# bpftool prog dump xlated id 10 file /tmp/t**
278 | **$ ls -l /tmp/t**                              299 | **$ ls -l /tmp/t**
279                                                   300 
280 ::                                                301 ::
281                                                   302 
282     -rw------- 1 root root 560 Jul 22 01:42 /t    303     -rw------- 1 root root 560 Jul 22 01:42 /tmp/t
283                                                   304 
284 **# bpftool prog dump jited tag 005a3d2123620c    305 **# bpftool prog dump jited tag 005a3d2123620c8b**
285                                                   306 
286 ::                                                307 ::
287                                                   308 
288     0:   push   %rbp                              309     0:   push   %rbp
289     1:   mov    %rsp,%rbp                         310     1:   mov    %rsp,%rbp
290     2:   sub    $0x228,%rsp                       311     2:   sub    $0x228,%rsp
291     3:   sub    $0x28,%rbp                        312     3:   sub    $0x28,%rbp
292     4:   mov    %rbx,0x0(%rbp)                    313     4:   mov    %rbx,0x0(%rbp)
293                                                   314 
294 |                                                 315 |
295 | **# mount -t bpf none /sys/fs/bpf/**            316 | **# mount -t bpf none /sys/fs/bpf/**
296 | **# bpftool prog pin id 10 /sys/fs/bpf/prog*    317 | **# bpftool prog pin id 10 /sys/fs/bpf/prog**
297 | **# bpftool prog load ./my_prog.o /sys/fs/bp    318 | **# bpftool prog load ./my_prog.o /sys/fs/bpf/prog2**
298 | **# ls -l /sys/fs/bpf/**                        319 | **# ls -l /sys/fs/bpf/**
299                                                   320 
300 ::                                                321 ::
301                                                   322 
302     -rw------- 1 root root 0 Jul 22 01:43 prog    323     -rw------- 1 root root 0 Jul 22 01:43 prog
303     -rw------- 1 root root 0 Jul 22 01:44 prog    324     -rw------- 1 root root 0 Jul 22 01:44 prog2
304                                                   325 
305 **# bpftool prog dump jited pinned /sys/fs/bpf    326 **# bpftool prog dump jited pinned /sys/fs/bpf/prog opcodes**
306                                                   327 
307 ::                                                328 ::
308                                                   329 
309    0:   push   %rbp                               330    0:   push   %rbp
310         55                                        331         55
311    1:   mov    %rsp,%rbp                          332    1:   mov    %rsp,%rbp
312         48 89 e5                                  333         48 89 e5
313    4:   sub    $0x228,%rsp                        334    4:   sub    $0x228,%rsp
314         48 81 ec 28 02 00 00                      335         48 81 ec 28 02 00 00
315    b:   sub    $0x28,%rbp                         336    b:   sub    $0x28,%rbp
316         48 83 ed 28                               337         48 83 ed 28
317    f:   mov    %rbx,0x0(%rbp)                     338    f:   mov    %rbx,0x0(%rbp)
318         48 89 5d 00                               339         48 89 5d 00
319                                                   340 
320 |                                                 341 |
321 | **# bpftool prog load xdp1_kern.o /sys/fs/bp    342 | **# bpftool prog load xdp1_kern.o /sys/fs/bpf/xdp1 type xdp map name rxcnt id 7**
322 | **# bpftool prog show pinned /sys/fs/bpf/xdp    343 | **# bpftool prog show pinned /sys/fs/bpf/xdp1**
323                                                   344 
324 ::                                                345 ::
325                                                   346 
326     9: xdp  name xdp_prog1  tag 539ec6ce11b52f    347     9: xdp  name xdp_prog1  tag 539ec6ce11b52f98  gpl
327             loaded_at 2018-06-25T16:17:31-0700    348             loaded_at 2018-06-25T16:17:31-0700  uid 0
328             xlated 488B  jited 336B  memlock 4    349             xlated 488B  jited 336B  memlock 4096B  map_ids 7
329                                                   350 
330 **# rm /sys/fs/bpf/xdp1**                         351 **# rm /sys/fs/bpf/xdp1**
331                                                   352 
332 |                                                 353 |
333 | **# bpftool prog profile id 337 duration 10     354 | **# bpftool prog profile id 337 duration 10 cycles instructions llc_misses**
334                                                   355 
335 ::                                                356 ::
336                                                   357 
337          51397 run_cnt                            358          51397 run_cnt
338       40176203 cycles                             359       40176203 cycles                                                 (83.05%)
339       42518139 instructions    #   1.06 insns     360       42518139 instructions    #   1.06 insns per cycle               (83.39%)
340            123 llc_misses      #   2.89 LLC mi    361            123 llc_misses      #   2.89 LLC misses per million insns  (83.15%)
341                                                   362 
342 |                                                 363 |
343 | Output below is for the trace logs.             364 | Output below is for the trace logs.
344 | Run in separate terminals:                      365 | Run in separate terminals:
345 | **# bpftool prog tracelog**                     366 | **# bpftool prog tracelog**
346 | **# bpftool prog load -L -d file.o**            367 | **# bpftool prog load -L -d file.o**
347                                                   368 
348 ::                                                369 ::
349                                                   370 
350     bpftool-620059  [004] d... 2634685.517903:    371     bpftool-620059  [004] d... 2634685.517903: bpf_trace_printk: btf_load size 665 r=5
351     bpftool-620059  [004] d... 2634685.517912:    372     bpftool-620059  [004] d... 2634685.517912: bpf_trace_printk: map_create sample_map idx 0 type 2 value_size 4 value_btf_id 0 r=6
352     bpftool-620059  [004] d... 2634685.517997:    373     bpftool-620059  [004] d... 2634685.517997: bpf_trace_printk: prog_load sample insn_cnt 13 r=7
353     bpftool-620059  [004] d... 2634685.517999:    374     bpftool-620059  [004] d... 2634685.517999: bpf_trace_printk: close(5) = 0
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php