linux/Documentation/bpf
Dave Marchevsky 391145ba2a bpf: Add __bpf_kfunc_{start,end}_defs macros
BPF kfuncs are meant to be called from BPF programs. Accordingly, most
kfuncs are not called from anywhere in the kernel, which the
-Wmissing-prototypes warning is unhappy about. We've peppered
__diag_ignore_all("-Wmissing-prototypes", ... everywhere kfuncs are
defined in the codebase to suppress this warning.

This patch adds two macros meant to bound one or many kfunc definitions.
All existing kfunc definitions which use these __diag calls to suppress
-Wmissing-prototypes are migrated to use the newly-introduced macros.
A new __diag_ignore_all - for "-Wmissing-declarations" - is added to the
__bpf_kfunc_start_defs macro based on feedback from Andrii on an earlier
version of this patch [0] and another recent mailing list thread [1].

In the future we might need to ignore different warnings or do other
kfunc-specific things. This change will make it easier to make such
modifications for all kfunc defs.

  [0]: https://lore.kernel.org/bpf/CAEf4BzaE5dRWtK6RPLnjTW-MW9sx9K3Fn6uwqCTChK2Dcb1Xig@mail.gmail.com/
  [1]: https://lore.kernel.org/bpf/ZT+2qCc%2FaXep0%2FLf@krava/

Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com>
Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Cc: Jiri Olsa <olsajiri@gmail.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: David Vernet <void@manifault.com>
Acked-by: Yafang Shao <laoar.shao@gmail.com>
Link: https://lore.kernel.org/r/20231031215625.2343848-1-davemarchevsky@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2023-11-01 22:33:53 -07:00
..
libbpf documentation/bpf: Document cgroup unix socket address hooks 2023-10-11 17:27:55 -07:00
standardization bpf, docs: Define signed modulo as using truncated division 2023-10-19 01:36:12 +02:00
bpf_design_QA.rst docs/bpf: Add documentation for new instructions 2023-07-27 18:54:17 -07:00
bpf_devel_QA.rst bpf: Replace deprecated -target with --target= for Clang 2023-06-29 15:46:17 +02:00
bpf_iterators.rst bpf, docs: BPF Iterator Document 2023-06-22 19:44:22 +02:00
bpf_licensing.rst bpf: Document BPF licensing. 2021-09-22 23:13:13 +02:00
bpf_prog_run.rst Documentation/bpf: Add documentation for BPF_PROG_RUN 2022-03-09 14:19:22 -08:00
btf.rst docs/bpf: Fix "file doesn't exist" warnings in {llvm_reloc,btf}.rst 2023-09-01 15:56:48 +02:00
clang-notes.rst bpf, docs: Explain helper functions 2023-03-10 13:02:00 -08:00
classic_vs_extended.rst bpf, docs: Split the comparism to classic BPF from instruction-set.rst 2021-12-30 16:31:44 -08:00
cpumasks.rst Documentation: Fix typos 2023-08-18 11:29:03 -06:00
drgn.rst
faq.rst bpf, docs: Fix ordering of bpf documentation 2021-11-17 23:24:01 +01:00
graph_ds_impl.rst Documentation: Fix typos 2023-08-18 11:29:03 -06:00
helpers.rst bpf, docs: Fix ordering of bpf documentation 2021-11-17 23:24:01 +01:00
index.rst bpf, docs: Move linux-notes.rst to root bpf docs tree 2023-08-30 16:35:44 +02:00
kfuncs.rst bpf: Add __bpf_kfunc_{start,end}_defs macros 2023-11-01 22:33:53 -07:00
linux-notes.rst bpf, docs: Move linux-notes.rst to root bpf docs tree 2023-08-30 16:35:44 +02:00
llvm_reloc.rst docs/bpf: Fix "file doesn't exist" warnings in {llvm_reloc,btf}.rst 2023-09-01 15:56:48 +02:00
map_array.rst docs/bpf: Fix sphinx warnings in BPF map docs 2022-11-24 01:05:04 +01:00
map_bloom_filter.rst docs/bpf: Document BPF_MAP_TYPE_BLOOM_FILTER 2022-11-23 22:47:32 +01:00
map_cgroup_storage.rst Remove duplicate words inside documentation 2022-09-27 13:21:43 -06:00
map_cgrp_storage.rst docs/bpf: Add documentation for new cgroup local storage 2022-10-25 23:19:20 -07:00
map_cpumap.rst docs/bpf: Fix sphinx warnings for cpumap 2022-11-23 22:38:53 +01:00
map_devmap.rst docs/bpf: Fix sphinx warnings for devmap 2022-11-23 22:40:27 +01:00
map_hash.rst docs/bpf: Add LRU internals description and graph 2023-04-27 14:20:44 +02:00
map_lpm_trie.rst docs/bpf: Fix sphinx warnings in BPF map docs 2022-11-24 01:05:04 +01:00
map_lru_hash_update.dot docs/bpf: Add LRU internals description and graph 2023-04-27 14:20:44 +02:00
map_of_maps.rst docs/bpf: Fix sphinx warnings in BPF map docs 2022-11-24 01:05:04 +01:00
map_queue_stack.rst docs/bpf: Fix sphinx warnings in BPF map docs 2022-11-24 01:05:04 +01:00
map_sk_storage.rst docs/bpf: Reword docs for BPF_MAP_TYPE_SK_STORAGE 2022-12-14 18:35:41 +01:00
map_sockmap.rst sock: Remove ->sendpage*() in favour of sendmsg(MSG_SPLICE_PAGES) 2023-06-24 15:50:13 -07:00
map_xskmap.rst Documentation: bpf: correct spelling 2023-01-28 12:22:20 -08:00
maps.rst bpf, docs: Fix final bpf docs build failure 2023-03-02 22:36:10 -08:00
other.rst bpf, documentation: Add graph documentation for non-owning refs 2023-02-13 19:40:53 -08:00
prog_cgroup_sockopt.rst bpf: Document EFAULT changes for sockopt 2023-05-13 16:55:46 -07:00
prog_cgroup_sysctl.rst
prog_flow_dissector.rst docs/bpf: update out-of-date doc in BPF flow dissector 2023-09-13 14:22:57 -07:00
prog_lsm.rst lsm: move hook comments docs to security/security.c 2023-04-28 11:58:34 -04:00
prog_sk_lookup.rst bpf: sk_lookup: Add user documentation 2020-08-24 14:46:50 -07:00
programs.rst docs/bpf: Add table of BPF program types to libbpf docs 2022-11-23 13:31:20 -08:00
redirect.rst bpf, docs: DEVMAPs and XDP_REDIRECT 2022-11-18 23:16:31 +01:00
ringbuf.rst Documentation: bpf: correct spelling 2023-01-28 12:22:20 -08:00
s390.rst
syscall_api.rst bpf, docs: Fix ordering of bpf documentation 2021-11-17 23:24:01 +01:00
test_debug.rst bpf, docs: Fix ordering of bpf documentation 2021-11-17 23:24:01 +01:00
verifier.rst docs/bpf: Add description of register liveness tracking algorithm 2023-02-02 20:21:59 -08:00