17c2aad20Sopenharmony_ci.. SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
27c2aad20Sopenharmony_ci
37c2aad20Sopenharmony_ci.. _api:
47c2aad20Sopenharmony_ci
57c2aad20Sopenharmony_ci.. toctree:: Table of Contents
67c2aad20Sopenharmony_ci
77c2aad20Sopenharmony_ci
87c2aad20Sopenharmony_ciLIBBPF API
97c2aad20Sopenharmony_ci==========
107c2aad20Sopenharmony_ci
117c2aad20Sopenharmony_ciError Handling
127c2aad20Sopenharmony_ci--------------
137c2aad20Sopenharmony_ci
147c2aad20Sopenharmony_ciWhen libbpf is used in "libbpf 1.0 mode", API functions can return errors in one of two ways.
157c2aad20Sopenharmony_ci
167c2aad20Sopenharmony_ciYou can set "libbpf 1.0" mode with the following line:
177c2aad20Sopenharmony_ci
187c2aad20Sopenharmony_ci.. code-block::
197c2aad20Sopenharmony_ci
207c2aad20Sopenharmony_ci    libbpf_set_strict_mode(LIBBPF_STRICT_DIRECT_ERRS | LIBBPF_STRICT_CLEAN_PTRS);
217c2aad20Sopenharmony_ci
227c2aad20Sopenharmony_ciIf the function returns an error code directly, it uses 0 to indicate success
237c2aad20Sopenharmony_ciand a negative error code to indicate what caused the error. In this case the
247c2aad20Sopenharmony_cierror code should be checked directly from the return, you do not need to check
257c2aad20Sopenharmony_cierrno.
267c2aad20Sopenharmony_ci
277c2aad20Sopenharmony_ciFor example:
287c2aad20Sopenharmony_ci
297c2aad20Sopenharmony_ci.. code-block::
307c2aad20Sopenharmony_ci
317c2aad20Sopenharmony_ci    err = some_libbpf_api_with_error_return(...);
327c2aad20Sopenharmony_ci    if (err < 0) {
337c2aad20Sopenharmony_ci        /* Handle error accordingly */
347c2aad20Sopenharmony_ci    }
357c2aad20Sopenharmony_ci
367c2aad20Sopenharmony_ciIf the function returns a pointer, it will return NULL to indicate there was
377c2aad20Sopenharmony_cian error. In this case errno should be checked for the error code.
387c2aad20Sopenharmony_ci
397c2aad20Sopenharmony_ciFor example:
407c2aad20Sopenharmony_ci
417c2aad20Sopenharmony_ci.. code-block::
427c2aad20Sopenharmony_ci
437c2aad20Sopenharmony_ci    ptr = some_libbpf_api_returning_ptr();
447c2aad20Sopenharmony_ci    if (!ptr) {
457c2aad20Sopenharmony_ci        /* note no minus sign for EINVAL and E2BIG below */
467c2aad20Sopenharmony_ci        if (errno == EINVAL) {
477c2aad20Sopenharmony_ci           /* handle EINVAL error */
487c2aad20Sopenharmony_ci        } else if (errno == E2BIG) {
497c2aad20Sopenharmony_ci           /* handle E2BIG error */
507c2aad20Sopenharmony_ci        }
517c2aad20Sopenharmony_ci    }
527c2aad20Sopenharmony_ci
537c2aad20Sopenharmony_cilibbpf.h
547c2aad20Sopenharmony_ci--------
557c2aad20Sopenharmony_ci.. doxygenfile:: libbpf.h
567c2aad20Sopenharmony_ci   :project: libbpf
577c2aad20Sopenharmony_ci   :sections: func define public-type enum
587c2aad20Sopenharmony_ci
597c2aad20Sopenharmony_cibpf.h
607c2aad20Sopenharmony_ci-----
617c2aad20Sopenharmony_ci.. doxygenfile:: bpf.h
627c2aad20Sopenharmony_ci   :project: libbpf
637c2aad20Sopenharmony_ci   :sections: func define public-type enum
647c2aad20Sopenharmony_ci
657c2aad20Sopenharmony_cibtf.h
667c2aad20Sopenharmony_ci-----
677c2aad20Sopenharmony_ci.. doxygenfile:: btf.h
687c2aad20Sopenharmony_ci   :project: libbpf
697c2aad20Sopenharmony_ci   :sections: func define public-type enum
707c2aad20Sopenharmony_ci
717c2aad20Sopenharmony_cixsk.h
727c2aad20Sopenharmony_ci-----
737c2aad20Sopenharmony_ci.. doxygenfile:: xsk.h
747c2aad20Sopenharmony_ci   :project: libbpf
757c2aad20Sopenharmony_ci   :sections: func define public-type enum
767c2aad20Sopenharmony_ci
777c2aad20Sopenharmony_cibpf_tracing.h
787c2aad20Sopenharmony_ci-------------
797c2aad20Sopenharmony_ci.. doxygenfile:: bpf_tracing.h
807c2aad20Sopenharmony_ci   :project: libbpf
817c2aad20Sopenharmony_ci   :sections: func define public-type enum
827c2aad20Sopenharmony_ci
837c2aad20Sopenharmony_cibpf_core_read.h
847c2aad20Sopenharmony_ci---------------
857c2aad20Sopenharmony_ci.. doxygenfile:: bpf_core_read.h
867c2aad20Sopenharmony_ci   :project: libbpf
877c2aad20Sopenharmony_ci   :sections: func define public-type enum
887c2aad20Sopenharmony_ci
897c2aad20Sopenharmony_cibpf_endian.h
907c2aad20Sopenharmony_ci------------
917c2aad20Sopenharmony_ci.. doxygenfile:: bpf_endian.h
927c2aad20Sopenharmony_ci   :project: libbpf
937c2aad20Sopenharmony_ci   :sections: func define public-type enum
94