All of lore.kernel.org
 help / color / mirror / Atom feed
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


  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.