94 lines
2.0 KiB
ReStructuredText
94 lines
2.0 KiB
ReStructuredText
.. SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
|
|
|
|
.. _api:
|
|
|
|
.. toctree:: Table of Contents
|
|
|
|
|
|
LIBBPF API
|
|
==========
|
|
|
|
Error Handling
|
|
--------------
|
|
|
|
When libbpf is used in "libbpf 1.0 mode", API functions can return errors in one of two ways.
|
|
|
|
You can set "libbpf 1.0" mode with the following line:
|
|
|
|
.. code-block::
|
|
|
|
libbpf_set_strict_mode(LIBBPF_STRICT_DIRECT_ERRS | LIBBPF_STRICT_CLEAN_PTRS);
|
|
|
|
If the function returns an error code directly, it uses 0 to indicate success
|
|
and a negative error code to indicate what caused the error. In this case the
|
|
error code should be checked directly from the return, you do not need to check
|
|
errno.
|
|
|
|
For example:
|
|
|
|
.. code-block::
|
|
|
|
err = some_libbpf_api_with_error_return(...);
|
|
if (err < 0) {
|
|
/* Handle error accordingly */
|
|
}
|
|
|
|
If the function returns a pointer, it will return NULL to indicate there was
|
|
an error. In this case errno should be checked for the error code.
|
|
|
|
For example:
|
|
|
|
.. code-block::
|
|
|
|
ptr = some_libbpf_api_returning_ptr();
|
|
if (!ptr) {
|
|
/* note no minus sign for EINVAL and E2BIG below */
|
|
if (errno == EINVAL) {
|
|
/* handle EINVAL error */
|
|
} else if (errno == E2BIG) {
|
|
/* handle E2BIG error */
|
|
}
|
|
}
|
|
|
|
libbpf.h
|
|
--------
|
|
.. doxygenfile:: libbpf.h
|
|
:project: libbpf
|
|
:sections: func define public-type enum
|
|
|
|
bpf.h
|
|
-----
|
|
.. doxygenfile:: bpf.h
|
|
:project: libbpf
|
|
:sections: func define public-type enum
|
|
|
|
btf.h
|
|
-----
|
|
.. doxygenfile:: btf.h
|
|
:project: libbpf
|
|
:sections: func define public-type enum
|
|
|
|
xsk.h
|
|
-----
|
|
.. doxygenfile:: xsk.h
|
|
:project: libbpf
|
|
:sections: func define public-type enum
|
|
|
|
bpf_tracing.h
|
|
-------------
|
|
.. doxygenfile:: bpf_tracing.h
|
|
:project: libbpf
|
|
:sections: func define public-type enum
|
|
|
|
bpf_core_read.h
|
|
---------------
|
|
.. doxygenfile:: bpf_core_read.h
|
|
:project: libbpf
|
|
:sections: func define public-type enum
|
|
|
|
bpf_endian.h
|
|
------------
|
|
.. doxygenfile:: bpf_endian.h
|
|
:project: libbpf
|
|
:sections: func define public-type enum
|