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

Reply via email to