~ [ 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.7.12)


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