#include <rte_memcpy.h>
#include <rte_memory.h>
#include <rte_memzone.h>
+#include <rte_atomic.h>
#include "opdl_ring.h"
#include "opdl_log.h"
/* If another thread started inputting before this one, but hasn't
* finished, we need to wait for it to complete to update the tail.
*/
- while (unlikely(__atomic_load_n(&s->shared.tail, __ATOMIC_ACQUIRE) !=
- old_head))
- rte_pause();
+ rte_wait_until_equal_32(&s->shared.tail, old_head, __ATOMIC_ACQUIRE);
__atomic_store_n(&s->shared.tail, old_head + num_entries,
__ATOMIC_RELEASE);