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