~ [ 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-5.8.18)


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

~ [ 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