From: dthaler1968@googlemail.com
To: bpf@vger.kernel.org
Cc: Dave Thaler <dthaler@microsoft.com>
Subject: [PATCH 4/9] bpf, docs: Explain helper functions
Date: Tue, 4 Oct 2022 22:47:40 +0000 [thread overview]
Message-ID: <20221004224745.1430-4-dthaler1968@googlemail.com> (raw)
In-Reply-To: <20221004224745.1430-1-dthaler1968@googlemail.com>
From: Dave Thaler <dthaler@microsoft.com>
Explain helper functions.
Kernel functions and bpf to bpf calls are covered in
a later commit in this set ("Add extended call instructions").
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
---
Documentation/bpf/instruction-set.rst | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/Documentation/bpf/instruction-set.rst b/Documentation/bpf/instruction-set.rst
index 29b599c70..f9e56d9d5 100644
--- a/Documentation/bpf/instruction-set.rst
+++ b/Documentation/bpf/instruction-set.rst
@@ -242,7 +242,7 @@ BPF_JSET 0x40 PC += off if dst & src
BPF_JNE 0x50 PC += off if dst != src
BPF_JSGT 0x60 PC += off if dst > src signed
BPF_JSGE 0x70 PC += off if dst >= src signed
-BPF_CALL 0x80 function call
+BPF_CALL 0x80 function call see `Helper functions`_
BPF_EXIT 0x90 function / program return BPF_JMP only
BPF_JLT 0xa0 PC += off if dst < src unsigned
BPF_JLE 0xb0 PC += off if dst <= src unsigned
@@ -253,6 +253,22 @@ BPF_JSLE 0xd0 PC += off if dst <= src signed
The eBPF program needs to store the return value into register R0 before doing a
BPF_EXIT.
+Helper functions
+~~~~~~~~~~~~~~~~
+Helper functions are a concept whereby BPF programs can call into a
+set of function calls exposed by the eBPF runtime. Each helper
+function is identified by an integer used in a ``BPF_CALL`` instruction.
+The available helper functions may differ for each eBPF program type.
+
+Conceptually, each helper function is implemented with a commonly shared function
+signature defined as:
+
+ u64 function(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5)
+
+In actuality, each helper function is defined as taking between 0 and 5 arguments,
+with the remaining registers being ignored. The definition of a helper function
+is responsible for specifying the type (e.g., integer, pointer, etc.) of the value returned,
+the number of arguments, and the type of each argument.
Load and store instructions
===========================
--
2.33.4
next prev parent reply other threads:[~2022-10-04 22:47 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-04 22:47 [PATCH 1/9] bpf, docs: Add note about type convention dthaler1968
2022-10-04 22:47 ` [PATCH 2/9] bpf, docs: Fix modulo zero, division by zero, overflow, and underflow dthaler1968
2022-10-04 22:47 ` [PATCH 3/9] bpf, docs: Use consistent names for the same field dthaler1968
2022-10-04 22:47 ` dthaler1968 [this message]
2022-10-04 22:47 ` [PATCH 5/9] bpf, docs: Add appendix of all opcodes in order dthaler1968
2022-10-04 22:47 ` [PATCH 6/9] bpf, docs: Improve English readability dthaler1968
2022-10-04 22:47 ` [PATCH 7/9] bpf, docs: Add extended 64-bit immediate instructions dthaler1968
2022-10-04 22:47 ` [PATCH 8/9] bpf, docs: Add extended call instructions dthaler1968
2022-10-04 22:47 ` [PATCH 9/9] bpf, docs: Add note about reserved instruction dthaler1968
2022-10-05 9:54 ` kernel test robot
2022-10-17 20:42 ` [PATCH 1/9] bpf, docs: Add note about type convention Dave Thaler
2022-10-17 21:41 ` Alexei Starovoitov
2022-10-17 23:16 ` Dave Thaler
2022-10-17 23:43 ` Alexei Starovoitov
2022-10-19 18:40 ` Dave Thaler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221004224745.1430-4-dthaler1968@googlemail.com \
--to=dthaler1968@googlemail.com \
--cc=bpf@vger.kernel.org \
--cc=dthaler@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.