diff --git a/include/villas/queue.h b/include/villas/queue.h index 50e850260..30e29b64b 100644 --- a/include/villas/queue.h +++ b/include/villas/queue.h @@ -56,7 +56,7 @@ struct queue_cell { struct queue { cacheline_pad_t _pad0; /**< Shared area: all threads read */ - _Atomic enum state state; + atomic_size_t state; struct memtype *mem; size_t buffer_mask; diff --git a/lib/queue.c b/lib/queue.c index 2ca6c86c1..a10d9c360 100644 --- a/lib/queue.c +++ b/lib/queue.c @@ -188,8 +188,8 @@ int queue_pull_many(struct queue *q, void *ptr[], size_t cnt) int queue_close(struct queue *q) { - enum state expected = STATE_INITIALIZED; - if (atomic_compare_exchange_weak_explicit(&q->state, &expected, STATE_STOPPED, memory_order_relaxed, memory_order_relaxed)) + size_t expected = STATE_INITIALIZED; + if (atomic_compare_exchange_weak_explicit(&q->state, &expected, STATE_STOPPED, memory_order_relaxed, memory_order_relaxed)) { return 0; return -1;