~ [ 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 (Architecture i386) and /tools/bpf/bpftool/Documentation/bpftool-prog.rst (Architecture sparc64)


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