Thread (18 messages) 18 messages, 3 authors, 2021-02-19

Re: [PATCH v2 bpf-next 6/6] bpf: Document BTF_KIND_FLOAT in btf.rst

From: Yonghong Song <hidden>
Date: 2021-02-19 15:27:42


On 2/19/21 5:00 AM, Ilya Leoshkevich wrote:
On Thu, 2021-02-18 at 21:41 -0800, Yonghong Song wrote:
quoted

On 2/18/21 6:25 PM, Ilya Leoshkevich wrote:
quoted
Also document the expansion of the kind bitfield.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
   Documentation/bpf/btf.rst | 17 +++++++++++++++--
   1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/Documentation/bpf/btf.rst b/Documentation/bpf/btf.rst
index 44dc789de2b4..4f25c992d442 100644
--- a/Documentation/bpf/btf.rst
+++ b/Documentation/bpf/btf.rst
@@ -84,6 +84,7 @@ sequentially and type id is assigned to each
recognized type starting from id
       #define BTF_KIND_FUNC_PROTO     13      /* Function
Proto       */
       #define BTF_KIND_VAR            14      /* Variable     */
       #define BTF_KIND_DATASEC        15      /* Section      */
+    #define BTF_KIND_FLOAT          16      /* Floating
point       */
   
   Note that the type section encodes debug info, not just pure
types.
   ``BTF_KIND_FUNC`` is not a type, and it represents a defined
subprogram.
@@ -95,8 +96,8 @@ Each type contains the following common data::
           /* "info" bits arrangement
            * bits  0-15: vlen (e.g. # of struct's members)
            * bits 16-23: unused
-         * bits 24-27: kind (e.g. int, ptr, array...etc)
-         * bits 28-30: unused
+         * bits 24-28: kind (e.g. int, ptr, array...etc)
+         * bits 29-30: unused
            * bit     31: kind_flag, currently used by
            *             struct, union and fwd
            */
@@ -452,6 +453,18 @@ map definition.
     * ``offset``: the in-section offset of the variable
     * ``size``: the size of the variable in bytes
   
+2.2.16 BTF_KIND_FLOAT
+~~~~~~~~~~~~~~~~~~~~~
+
+``struct btf_type`` encoding requirement:
+ * ``name_off``: any valid offset
+ * ``info.kind_flag``: 0
+ * ``info.kind``: BTF_KIND_FLOAT
+ * ``info.vlen``: 0
+ * ``size``: the size of the float type in bytes.
I would be good to specify the allowed size in bytes 2, multiple of
4.
currently we do not have a maximum value, maybe 128. have a float
type
something like 2^10 seems strange.
I tried to write this all down and realized it's simpler to enumerate
the allowed values: 2, 4, 8, 12 and 16. I don't think there are 32-byte
floats on any of the architectures supported by the kernel.
This make senses. My above 128 means 128bits (sorry!), which is 16 
bytes, align with what you suggested.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help