Commit c229c17a authored by Will Hawkins's avatar Will Hawkins Committed by Andrii Nakryiko
Browse files

docs/bpf: Add constant values for linkages



Make the values of the symbolic constants that define the valid linkages
for functions and variables explicit.

Signed-off-by: default avatarWill Hawkins <hawkinsw@obs.cr>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Acked-by: default avatarYonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/bpf/20240911055033.2084881-1-hawkinsw@obs.cr
parent 376bd59e
Loading
Loading
Loading
Loading
+35 −4
Original line number Diff line number Diff line
@@ -368,7 +368,7 @@ No additional type data follow ``btf_type``.
  * ``info.kind_flag``: 0
  * ``info.kind``: BTF_KIND_FUNC
  * ``info.vlen``: linkage information (BTF_FUNC_STATIC, BTF_FUNC_GLOBAL
                   or BTF_FUNC_EXTERN)
                   or BTF_FUNC_EXTERN - see :ref:`BTF_Function_Linkage_Constants`)
  * ``type``: a BTF_KIND_FUNC_PROTO type

No additional type data follow ``btf_type``.
@@ -424,9 +424,8 @@ following data::
        __u32   linkage;
    };

``struct btf_var`` encoding:
  * ``linkage``: currently only static variable 0, or globally allocated
                 variable in ELF sections 1
``btf_var.linkage`` may take the values: BTF_VAR_STATIC, BTF_VAR_GLOBAL_ALLOCATED or BTF_VAR_GLOBAL_EXTERN -
see :ref:`BTF_Var_Linkage_Constants`.

Not all type of global variables are supported by LLVM at this point.
The following is currently available:
@@ -549,6 +548,38 @@ The ``btf_enum64`` encoding:
If the original enum value is signed and the size is less than 8,
that value will be sign extended into 8 bytes.

2.3 Constant Values
-------------------

.. _BTF_Function_Linkage_Constants:

2.3.1 Function Linkage Constant Values
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. table:: Function Linkage Values and Meanings

  ===================  =====  ===========
  kind                 value  description
  ===================  =====  ===========
  ``BTF_FUNC_STATIC``  0x0    definition of subprogram not visible outside containing compilation unit
  ``BTF_FUNC_GLOBAL``  0x1    definition of subprogram visible outside containing compilation unit
  ``BTF_FUNC_EXTERN``  0x2    declaration of a subprogram whose definition is outside the containing compilation unit
  ===================  =====  ===========


.. _BTF_Var_Linkage_Constants:

2.3.2 Variable Linkage Constant Values
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. table:: Variable Linkage Values and Meanings

  ============================  =====  ===========
  kind                          value  description
  ============================  =====  ===========
  ``BTF_VAR_STATIC``            0x0    definition of global variable not visible outside containing compilation unit
  ``BTF_VAR_GLOBAL_ALLOCATED``  0x1    definition of global variable visible outside containing compilation unit
  ``BTF_VAR_GLOBAL_EXTERN``     0x2    declaration of global variable whose definition is outside the containing compilation unit
  ============================  =====  ===========

3. BTF Kernel API
=================