This is a followup of the series that introduced lock annotations. I reworked and made annotations work in what seemed the easier cases. In most cases, I chose to convert inline wrappers around the EAL lock API to simple macro: I did not see much value in those wrappers and this is way simpler than adding __rte_*lock_function tags everywhere.
A list of libraries and drivers still need more work as their code have non obvious locks handling. For those components, the check is opted out. I leave it to their respective maintainers to enable the checks later. FreeBSD libc pthread API has lock annotations while Linux glibc has none. We could simply disable the check on FreeBSD, but having this check, a few issues got raised in drivers that are built with FreeBSD. For now, I went with a simple #ifdef FreeBSD for pthread mutex related annotations in our code. Maintainers, please review. -- David Marchand Changes since v1: - annotate code relying on pthread mutexes for FreeBSD libc that put annotations on its pthread API, - annotate Windows alarm code, David Marchand (20): malloc: rework heap lock handling mem: rework malloc heap init mem: annotate shared memory config locks hash: annotate cuckoo hash lock graph: annotate graph lock drivers: inherit lock annotations for Intel drivers net/cxgbe: inherit lock annotations net/fm10k: annotate mailbox lock net/sfc: rework locking in proxy code net/sfc: inherit lock annotations net/virtio: annotate lock for guest announce raw/ifpga: inherit lock annotations vdpa/sfc: inherit lock annotations ipc: annotate pthread mutex ethdev: annotate pthread mutex net/failsafe: fix mutex locking net/failsafe: annotate pthread mutex net/hinic: annotate pthread mutex eal/windows: disable lock check on alarm code enable lock check .../prog_guide/env_abstraction_layer.rst | 5 +- drivers/bus/dpaa/meson.build | 1 + drivers/common/cnxk/meson.build | 1 + drivers/common/iavf/iavf_osdep.h | 39 +---- drivers/common/iavf/iavf_prototype.h | 6 - drivers/common/idpf/base/idpf_osdep.h | 26 +--- drivers/common/mlx5/meson.build | 1 + drivers/event/cnxk/meson.build | 1 + drivers/meson.build | 2 +- drivers/net/bnx2x/meson.build | 1 + drivers/net/bnxt/meson.build | 1 + drivers/net/cnxk/meson.build | 1 + drivers/net/cxgbe/base/adapter.h | 35 +---- drivers/net/enic/meson.build | 1 + drivers/net/failsafe/failsafe_ether.c | 3 +- drivers/net/failsafe/failsafe_flow.c | 23 ++- drivers/net/failsafe/failsafe_ops.c | 142 +++++++++++++----- drivers/net/failsafe/failsafe_private.h | 6 + drivers/net/fm10k/fm10k_ethdev.c | 2 + drivers/net/hinic/base/hinic_compat.h | 6 + drivers/net/hns3/meson.build | 1 + drivers/net/i40e/base/i40e_osdep.h | 8 +- drivers/net/i40e/base/i40e_prototype.h | 5 - drivers/net/i40e/i40e_ethdev.c | 24 --- drivers/net/ice/base/ice_osdep.h | 26 +--- drivers/net/mlx5/meson.build | 1 + drivers/net/sfc/sfc.h | 41 +---- drivers/net/sfc/sfc_ev.c | 6 +- drivers/net/sfc/sfc_repr.c | 38 +---- drivers/net/sfc/sfc_repr_proxy.c | 59 ++++---- drivers/net/virtio/virtio_ethdev.c | 8 +- drivers/net/virtio/virtio_ethdev.h | 7 +- drivers/raw/ifpga/afu_pmd_core.c | 17 +-- drivers/vdpa/sfc/sfc_vdpa.h | 41 +---- drivers/vdpa/sfc/sfc_vdpa_ops.c | 14 +- lib/eal/common/eal_common_mcfg.c | 66 ++++---- lib/eal/common/eal_common_memory.c | 10 +- lib/eal/common/eal_common_proc.c | 3 + lib/eal/common/malloc_heap.c | 55 +++++-- lib/eal/common/malloc_heap.h | 3 + lib/eal/common/rte_malloc.c | 10 -- lib/eal/freebsd/eal.c | 13 ++ lib/eal/include/rte_eal_memconfig.h | 63 ++++++-- lib/eal/linux/eal.c | 13 ++ lib/eal/version.map | 4 + lib/eal/windows/eal.c | 13 ++ lib/eal/windows/eal_alarm.c | 2 + lib/ethdev/rte_flow.c | 8 + lib/graph/graph.c | 10 +- lib/graph/graph_private.h | 10 +- lib/hash/rte_cuckoo_hash.c | 8 + lib/ipsec/meson.build | 1 + lib/meson.build | 2 +- lib/timer/meson.build | 1 + lib/vhost/meson.build | 1 - 55 files changed, 461 insertions(+), 434 deletions(-) -- 2.39.2