030c216411
The impl_opaque field is shared between the timer arm and cancel operations. Meanwhile, the state flag acts as a guard variable to make sure the update of impl_opaque is synchronized. The original code uses rte_smp barriers to achieve that. This patch uses C11 atomics with an explicit one-way memory barrier instead of full barriers rte_smp_w/rmb() to avoid the unnecessary barrier on aarch64. Since compilers can generate the same instructions for volatile and non-volatile variable in C11 __atomics built-ins, so remain the volatile keyword in front of state enum to avoid the ABI break issue. Cc: stable@dpdk.org Signed-off-by: Phil Yang <phil.yang@arm.com> Reviewed-by: Dharmik Thakkar <dharmik.thakkar@arm.com> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com> Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com> |
||
---|---|---|
.. | ||
eventdev_trace_points.c | ||
Makefile | ||
meson.build | ||
rte_event_crypto_adapter.c | ||
rte_event_crypto_adapter.h | ||
rte_event_eth_rx_adapter.c | ||
rte_event_eth_rx_adapter.h | ||
rte_event_eth_tx_adapter.c | ||
rte_event_eth_tx_adapter.h | ||
rte_event_ring.c | ||
rte_event_ring.h | ||
rte_event_timer_adapter_pmd.h | ||
rte_event_timer_adapter.c | ||
rte_event_timer_adapter.h | ||
rte_eventdev_pmd_pci.h | ||
rte_eventdev_pmd_vdev.h | ||
rte_eventdev_pmd.h | ||
rte_eventdev_trace_fp.h | ||
rte_eventdev_trace.h | ||
rte_eventdev_version.map | ||
rte_eventdev.c | ||
rte_eventdev.h |