2021-11-15 22:58:42 +00:00
|
|
|
.. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
|
|
|
2019-04-25 15:30:09 -07:00
|
|
|
================
|
|
|
|
bpftool-btf
|
|
|
|
================
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
tool for inspection of BTF data
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
:Manual section: 8
|
|
|
|
|
bpftool: Update doc (use susbtitutions) and test_bpftool_synctypes.py
test_bpftool_synctypes.py helps detecting inconsistencies in bpftool
between the different list of types and options scattered in the
sources, the documentation, and the bash completion. For options that
apply to all bpftool commands, the script had a hardcoded list of
values, and would use them to check whether the man pages are
up-to-date. When writing the script, it felt acceptable to have this
list in order to avoid to open and parse bpftool's main.h every time,
and because the list of global options in bpftool doesn't change so
often.
However, this is prone to omissions, and we recently added a new
-l|--legacy option which was described in common_options.rst, but not
listed in the options summary of each manual page. The script did not
complain, because it keeps comparing the hardcoded list to the (now)
outdated list in the header file.
To address the issue, this commit brings the following changes:
- Options that are common to all bpftool commands (--json, --pretty, and
--debug) are moved to a dedicated file, and used in the definition of
a RST substitution. This substitution is used in the sources of all
the man pages.
- This list of common options is updated, with the addition of the new
-l|--legacy option.
- The script test_bpftool_synctypes.py is updated to compare:
- Options specific to a command, found in C files, for the
interactive help messages, with the same specific options from the
relevant man page for that command.
- Common options, checked just once: the list in main.h is
compared with the new list in substitutions.rst.
Signed-off-by: Quentin Monnet <quentin@isovalent.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20211115225844.33943-3-quentin@isovalent.com
2021-11-15 22:58:43 +00:00
|
|
|
.. include:: substitutions.rst
|
|
|
|
|
2019-04-25 15:30:09 -07:00
|
|
|
SYNOPSIS
|
|
|
|
========
|
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
**bpftool** [*OPTIONS*] **btf** *COMMAND*
|
2019-04-25 15:30:09 -07:00
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
*OPTIONS* := { |COMMON_OPTIONS| | { **-B** | **--base-btf** } }
|
2019-04-25 15:30:09 -07:00
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
*COMMANDS* := { **dump** | **help** }
|
2019-04-25 15:30:09 -07:00
|
|
|
|
|
|
|
BTF COMMANDS
|
|
|
|
=============
|
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
| **bpftool** **btf** { **show** | **list** } [**id** *BTF_ID*]
|
|
|
|
| **bpftool** **btf dump** *BTF_SRC* [**format** *FORMAT*]
|
|
|
|
| **bpftool** **btf help**
|
2019-04-25 15:30:09 -07:00
|
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
| *BTF_SRC* := { **id** *BTF_ID* | **prog** *PROG* | **map** *MAP* [{**key** | **value** | **kv** | **all**}] | **file** *FILE* }
|
2024-05-14 14:12:21 +01:00
|
|
|
| *FORMAT* := { **raw** | **c** [**unsorted**] }
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
| *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
|
2024-04-13 02:14:26 +01:00
|
|
|
| *PROG* := { **id** *PROG_ID* | **pinned** *FILE* | **tag** *PROG_TAG* | **name** *PROG_NAME* }
|
2019-04-25 15:30:09 -07:00
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
===========
|
2024-03-31 21:03:45 +01:00
|
|
|
bpftool btf { show | list } [id *BTF_ID*]
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
Show information about loaded BTF objects. If a BTF ID is specified, show
|
|
|
|
information only about given BTF object, otherwise list all BTF objects
|
|
|
|
currently loaded on the system.
|
2019-08-20 10:31:54 +01:00
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
Since Linux 5.8 bpftool is able to discover information about processes
|
|
|
|
that hold open file descriptors (FDs) against BTF objects. On such kernels
|
|
|
|
bpftool will automatically emit this information as well.
|
2020-06-19 16:17:03 -07:00
|
|
|
|
2024-03-31 21:03:45 +01:00
|
|
|
bpftool btf dump *BTF_SRC*
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
Dump BTF entries from a given *BTF_SRC*.
|
2019-04-25 15:30:09 -07:00
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
When **id** is specified, BTF object with that ID will be loaded and all
|
|
|
|
its BTF types emitted.
|
2019-04-25 15:30:09 -07:00
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
When **map** is provided, it's expected that map has associated BTF object
|
|
|
|
with BTF types describing key and value. It's possible to select whether to
|
|
|
|
dump only BTF type(s) associated with key (**key**), value (**value**),
|
|
|
|
both key and value (**kv**), or all BTF types present in associated BTF
|
|
|
|
object (**all**). If not specified, **kv** is assumed.
|
2019-04-25 15:30:09 -07:00
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
When **prog** is provided, it's expected that program has associated BTF
|
|
|
|
object with BTF types.
|
2019-04-25 15:30:09 -07:00
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
When specifying *FILE*, an ELF file is expected, containing .BTF section
|
|
|
|
with well-defined BTF binary format data, typically produced by clang or
|
|
|
|
pahole.
|
2019-05-24 11:59:06 -07:00
|
|
|
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
**format** option can be used to override default (raw) output format. Raw
|
2024-05-14 14:12:21 +01:00
|
|
|
(**raw**) or C-syntax (**c**) output formats are supported. With C-style
|
|
|
|
formatting, the output is sorted by default. Use the **unsorted** option
|
|
|
|
to avoid sorting the output.
|
2019-04-25 15:30:09 -07:00
|
|
|
|
2024-03-31 21:03:45 +01:00
|
|
|
bpftool btf help
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
Print short help message.
|
2019-04-25 15:30:09 -07:00
|
|
|
|
|
|
|
OPTIONS
|
|
|
|
=======
|
bpftool: Use simpler indentation in source rST for documentation
The rST manual pages for bpftool would use a mix of tabs and spaces for
indentation. While this is the norm in C code, this is rather unusual
for rST documents, and over time we've seen many contributors use a
wrong level of indentation for documentation update.
Let's fix bpftool's indentation in docs once and for all:
- Let's use spaces, that are more common in rST files.
- Remove one level of indentation for the synopsis, the command
description, and the "see also" section. As a result, all sections
start with the same indentation level in the generated man page.
- Rewrap the paragraphs after the changes.
There is no content change in this patch, only indentation and
rewrapping changes. The wrapping in the generated source files for the
manual pages is changed, but the pages displayed with "man" remain the
same, apart from the adjusted indentation level on relevant sections.
[ Quentin: rebased on bpf-next, removed indent level for command
description and options, updated synopsis, command summary, and "see
also" sections. ]
Signed-off-by: Rameez Rehman <rameezrehman408@hotmail.com>
Signed-off-by: Quentin Monnet <qmo@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240331200346.29118-2-qmo@kernel.org
2024-03-31 21:03:44 +01:00
|
|
|
.. include:: common_options.rst
|
|
|
|
|
|
|
|
-B, --base-btf *FILE*
|
|
|
|
Pass a base BTF object. Base BTF objects are typically used with BTF
|
|
|
|
objects for kernel modules. To avoid duplicating all kernel symbols
|
|
|
|
required by modules, BTF objects for modules are "split", they are
|
|
|
|
built incrementally on top of the kernel (vmlinux) BTF object. So the
|
|
|
|
base BTF reference should usually point to the kernel BTF.
|
|
|
|
|
|
|
|
When the main BTF object to process (for example, the module BTF to
|
|
|
|
dump) is passed as a *FILE*, bpftool attempts to autodetect the path
|
|
|
|
for the base object, and passing this option is optional. When the main
|
|
|
|
BTF object is passed through other handles, this option becomes
|
|
|
|
necessary.
|
2021-07-30 22:54:34 +01:00
|
|
|
|
2019-04-25 15:30:09 -07:00
|
|
|
EXAMPLES
|
|
|
|
========
|
|
|
|
**# bpftool btf dump id 1226**
|
2020-09-09 17:22:50 +01:00
|
|
|
|
2019-04-25 15:30:09 -07:00
|
|
|
::
|
|
|
|
|
|
|
|
[1] PTR '(anon)' type_id=2
|
|
|
|
[2] STRUCT 'dummy_tracepoint_args' size=16 vlen=2
|
|
|
|
'pad' type_id=3 bits_offset=0
|
|
|
|
'sock' type_id=4 bits_offset=64
|
|
|
|
[3] INT 'long long unsigned int' size=8 bits_offset=0 nr_bits=64 encoding=(none)
|
|
|
|
[4] PTR '(anon)' type_id=5
|
|
|
|
[5] FWD 'sock' fwd_kind=union
|
|
|
|
|
|
|
|
This gives an example of default output for all supported BTF kinds.
|
|
|
|
|
|
|
|
**$ cat prog.c**
|
2020-09-09 17:22:50 +01:00
|
|
|
|
2019-04-25 15:30:09 -07:00
|
|
|
::
|
|
|
|
|
|
|
|
struct fwd_struct;
|
|
|
|
|
|
|
|
enum my_enum {
|
|
|
|
VAL1 = 3,
|
|
|
|
VAL2 = 7,
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct my_struct my_struct_t;
|
|
|
|
|
|
|
|
struct my_struct {
|
|
|
|
const unsigned int const_int_field;
|
|
|
|
int bitfield_field: 4;
|
|
|
|
char arr_field[16];
|
|
|
|
const struct fwd_struct *restrict fwd_field;
|
|
|
|
enum my_enum enum_field;
|
|
|
|
volatile my_struct_t *typedef_ptr_field;
|
|
|
|
};
|
|
|
|
|
|
|
|
union my_union {
|
|
|
|
int a;
|
|
|
|
struct my_struct b;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct my_struct struct_global_var __attribute__((section("data_sec"))) = {
|
|
|
|
.bitfield_field = 3,
|
|
|
|
.enum_field = VAL1,
|
|
|
|
};
|
|
|
|
int global_var __attribute__((section("data_sec"))) = 7;
|
|
|
|
|
|
|
|
__attribute__((noinline))
|
|
|
|
int my_func(union my_union *arg1, int arg2)
|
|
|
|
{
|
|
|
|
static int static_var __attribute__((section("data_sec"))) = 123;
|
|
|
|
static_var++;
|
|
|
|
return static_var;
|
|
|
|
}
|
|
|
|
|
|
|
|
**$ bpftool btf dump file prog.o**
|
2020-09-09 17:22:50 +01:00
|
|
|
|
2019-04-25 15:30:09 -07:00
|
|
|
::
|
|
|
|
|
|
|
|
[1] PTR '(anon)' type_id=2
|
|
|
|
[2] UNION 'my_union' size=48 vlen=2
|
|
|
|
'a' type_id=3 bits_offset=0
|
|
|
|
'b' type_id=4 bits_offset=0
|
|
|
|
[3] INT 'int' size=4 bits_offset=0 nr_bits=32 encoding=SIGNED
|
|
|
|
[4] STRUCT 'my_struct' size=48 vlen=6
|
|
|
|
'const_int_field' type_id=5 bits_offset=0
|
|
|
|
'bitfield_field' type_id=3 bits_offset=32 bitfield_size=4
|
|
|
|
'arr_field' type_id=8 bits_offset=40
|
|
|
|
'fwd_field' type_id=10 bits_offset=192
|
|
|
|
'enum_field' type_id=14 bits_offset=256
|
|
|
|
'typedef_ptr_field' type_id=15 bits_offset=320
|
|
|
|
[5] CONST '(anon)' type_id=6
|
|
|
|
[6] INT 'unsigned int' size=4 bits_offset=0 nr_bits=32 encoding=(none)
|
|
|
|
[7] INT 'char' size=1 bits_offset=0 nr_bits=8 encoding=SIGNED
|
|
|
|
[8] ARRAY '(anon)' type_id=7 index_type_id=9 nr_elems=16
|
|
|
|
[9] INT '__ARRAY_SIZE_TYPE__' size=4 bits_offset=0 nr_bits=32 encoding=(none)
|
|
|
|
[10] RESTRICT '(anon)' type_id=11
|
|
|
|
[11] PTR '(anon)' type_id=12
|
|
|
|
[12] CONST '(anon)' type_id=13
|
|
|
|
[13] FWD 'fwd_struct' fwd_kind=union
|
|
|
|
[14] ENUM 'my_enum' size=4 vlen=2
|
|
|
|
'VAL1' val=3
|
|
|
|
'VAL2' val=7
|
|
|
|
[15] PTR '(anon)' type_id=16
|
|
|
|
[16] VOLATILE '(anon)' type_id=17
|
|
|
|
[17] TYPEDEF 'my_struct_t' type_id=4
|
|
|
|
[18] FUNC_PROTO '(anon)' ret_type_id=3 vlen=2
|
|
|
|
'arg1' type_id=1
|
|
|
|
'arg2' type_id=3
|
|
|
|
[19] FUNC 'my_func' type_id=18
|
|
|
|
[20] VAR 'struct_global_var' type_id=4, linkage=global-alloc
|
|
|
|
[21] VAR 'global_var' type_id=3, linkage=global-alloc
|
|
|
|
[22] VAR 'my_func.static_var' type_id=3, linkage=static
|
|
|
|
[23] DATASEC 'data_sec' size=0 vlen=3
|
|
|
|
type_id=20 offset=0 size=48
|
|
|
|
type_id=21 offset=0 size=4
|
|
|
|
type_id=22 offset=52 size=4
|
|
|
|
|
|
|
|
The following commands print BTF types associated with specified map's key,
|
|
|
|
value, both key and value, and all BTF types, respectively. By default, both
|
|
|
|
key and value types will be printed.
|
|
|
|
|
|
|
|
**# bpftool btf dump map id 123 key**
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
[39] TYPEDEF 'u32' type_id=37
|
|
|
|
|
|
|
|
**# bpftool btf dump map id 123 value**
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
[86] PTR '(anon)' type_id=87
|
|
|
|
|
|
|
|
**# bpftool btf dump map id 123 kv**
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
[39] TYPEDEF 'u32' type_id=37
|
|
|
|
[86] PTR '(anon)' type_id=87
|
|
|
|
|
|
|
|
**# bpftool btf dump map id 123 all**
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
[1] PTR '(anon)' type_id=0
|
|
|
|
.
|
|
|
|
.
|
|
|
|
.
|
|
|
|
[2866] ARRAY '(anon)' type_id=52 index_type_id=51 nr_elems=4
|
|
|
|
|
|
|
|
All the standard ways to specify map or program are supported:
|
|
|
|
|
|
|
|
**# bpftool btf dump map id 123**
|
|
|
|
|
|
|
|
**# bpftool btf dump map pinned /sys/fs/bpf/map_name**
|
|
|
|
|
|
|
|
**# bpftool btf dump prog id 456**
|
|
|
|
|
|
|
|
**# bpftool btf dump prog tag b88e0a09b1d9759d**
|
|
|
|
|
|
|
|
**# bpftool btf dump prog pinned /sys/fs/bpf/prog_name**
|
2021-07-30 22:54:34 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
| **# bpftool btf dump file /sys/kernel/btf/i2c_smbus**
|
|
|
|
| (or)
|
|
|
|
| **# I2C_SMBUS_ID=$(bpftool btf show -p | jq '.[] | select(.name=="i2c_smbus").id')**
|
|
|
|
| **# bpftool btf dump id ${I2C_SMBUS_ID} -B /sys/kernel/btf/vmlinux**
|
|
|
|
|
|
|
|
::
|
|
|
|
|
|
|
|
[104848] STRUCT 'i2c_smbus_alert' size=40 vlen=2
|
|
|
|
'alert' type_id=393 bits_offset=0
|
|
|
|
'ara' type_id=56050 bits_offset=256
|
|
|
|
[104849] STRUCT 'alert_data' size=12 vlen=3
|
|
|
|
'addr' type_id=16 bits_offset=0
|
|
|
|
'type' type_id=56053 bits_offset=32
|
|
|
|
'data' type_id=7 bits_offset=64
|
|
|
|
[104850] PTR '(anon)' type_id=104848
|
|
|
|
[104851] PTR '(anon)' type_id=104849
|
|
|
|
[104852] FUNC 'i2c_register_spd' type_id=84745 linkage=static
|
|
|
|
[104853] FUNC 'smbalert_driver_init' type_id=1213 linkage=static
|
|
|
|
[104854] FUNC_PROTO '(anon)' ret_type_id=18 vlen=1
|
|
|
|
'ara' type_id=56050
|
|
|
|
[104855] FUNC 'i2c_handle_smbus_alert' type_id=104854 linkage=static
|
|
|
|
[104856] FUNC 'smbalert_remove' type_id=104854 linkage=static
|
|
|
|
[104857] FUNC_PROTO '(anon)' ret_type_id=18 vlen=2
|
|
|
|
'ara' type_id=56050
|
|
|
|
'id' type_id=56056
|
|
|
|
[104858] FUNC 'smbalert_probe' type_id=104857 linkage=static
|
|
|
|
[104859] FUNC 'smbalert_work' type_id=9695 linkage=static
|
|
|
|
[104860] FUNC 'smbus_alert' type_id=71367 linkage=static
|
|
|
|
[104861] FUNC 'smbus_do_alert' type_id=84827 linkage=static
|