fts_enter/exit take mutexes depending on device flags set at
initialisation.
Annotate those helpers and, since clang does not support conditional
locking, waive the lock check on their implementation.

Signed-off-by: David Marchand <david.march...@redhat.com>
---
 lib/ethdev/rte_flow.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c
index 69e6e749f7..c66625d1fe 100644
--- a/lib/ethdev/rte_flow.c
+++ b/lib/ethdev/rte_flow.c
@@ -297,6 +297,10 @@ rte_flow_dynf_metadata_register(void)
 
 static inline void
 fts_enter(struct rte_eth_dev *dev)
+#ifdef RTE_EXEC_ENV_FREEBSD
+       __rte_exclusive_lock_function(dev->data->flow_ops_mutex)
+       __rte_no_thread_safety_analysis
+#endif
 {
        if (!(dev->data->dev_flags & RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE))
                pthread_mutex_lock(&dev->data->flow_ops_mutex);
@@ -304,6 +308,10 @@ fts_enter(struct rte_eth_dev *dev)
 
 static inline void
 fts_exit(struct rte_eth_dev *dev)
+#ifdef RTE_EXEC_ENV_FREEBSD
+       __rte_unlock_function(dev->data->flow_ops_mutex)
+       __rte_no_thread_safety_analysis
+#endif
 {
        if (!(dev->data->dev_flags & RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE))
                pthread_mutex_unlock(&dev->data->flow_ops_mutex);
-- 
2.39.2

Reply via email to