From 2c695526dd74bdfe995da10d8a3570c67e424d55 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sat, 30 Dec 2017 12:17:55 +0100 Subject: [PATCH] Fix issue with stricter C++ compiler with atomic definition. (It still feels strange to not be able to store 0 in an atomic unsigned long). --- m-buffer.h | 18 +++++++++--------- m-genint.h | 2 +- m-snapshot.h | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/m-buffer.h b/m-buffer.h index 7acfe63b..9f9df185 100644 --- a/m-buffer.h +++ b/m-buffer.h @@ -116,9 +116,9 @@ M_C(name, _init)(buffer_t v, size_t size) \ assert( size > 0); \ BUFFERI_IF_CTE_SIZE(m_size)(assert(size == m_size), v->size = size); \ v->idx_prod = v->idx_cons = v->overwrite = 0; \ - atomic_init (&v->number[0], 0); \ + atomic_init (&v->number[0], 0UL); \ if (BUFFERI_POLICY_P(policy, BUFFER_DEFERRED_POP)) \ - atomic_init (&v->number[1], 0); \ + atomic_init (&v->number[1], 0UL); \ if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) { \ m_mutex_init(v->mutex); \ m_cond_init(v->there_is_data); \ @@ -156,9 +156,9 @@ M_C(name, _init)(buffer_t v, size_t size) \ } \ } \ v->idx_prod = v->idx_cons = 0; \ - atomic_store (&v->number[0], 0); \ + atomic_store (&v->number[0], 0UL); \ if (BUFFERI_POLICY_P(policy, BUFFER_DEFERRED_POP)) \ - atomic_store(&v->number[1], 0); \ + atomic_store(&v->number[1], 0UL); \ BUFFERI_CONTRACT(v,m_size); \ } \ \ @@ -187,9 +187,9 @@ M_C(name, _init)(buffer_t v, size_t size) \ if (BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) \ M_C(name, _int_clear_obj)(v); \ v->idx_prod = v->idx_cons = 0; \ - atomic_store (&v->number[0], 0); \ + atomic_store (&v->number[0], 0UL); \ if (BUFFERI_POLICY_P(policy, BUFFER_DEFERRED_POP)) \ - atomic_store(&v->number[1], 0); \ + atomic_store(&v->number[1], 0UL); \ if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) { \ m_cond_signal(v->there_is_room_for_data); \ m_mutex_unlock(v->mutex); \ @@ -454,8 +454,8 @@ M_C(name, _init)(buffer_t v, size_t size) \ assert( M_POWEROF2_P(size)); \ assert (size <= UINT_MAX); \ assert(((policy) & (BUFFER_STACK|BUFFER_THREAD_UNSAFE|BUFFER_PUSH_OVERWRITE)) == 0); \ - atomic_init(&buffer->ProdIdx, size); \ - atomic_init(&buffer->ConsoIdx, size); \ + atomic_init(&buffer->ProdIdx, (unsigned long long) size); \ + atomic_init(&buffer->ConsoIdx, (unsigned long long) size); \ buffer->size = size; \ buffer->Tab = M_GET_REALLOC oplist (M_C(name, _el_t), NULL, size); \ if (buffer->Tab == NULL) { \ @@ -463,7 +463,7 @@ M_C(name, _init)(buffer_t v, size_t size) \ return; \ } \ for(unsigned int j = 0; j < size; j++) { \ - atomic_init(&buffer->Tab[j].seq, 2*j+1); \ + atomic_init(&buffer->Tab[j].seq, 2*j+1ULL); \ if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \ M_GET_INIT oplist (buffer->Tab[j].x); \ } \ diff --git a/m-genint.h b/m-genint.h index a7e5b880..7e68d13f 100644 --- a/m-genint.h +++ b/m-genint.h @@ -67,7 +67,7 @@ static inline void genint_init(genint_t s, size_t n) return; } for(size_t i = 0; i < alloc; i++) - atomic_init(&s->data[i], 0); + atomic_init(&s->data[i], 0UL); GENINT_CONTRACT(s); } diff --git a/m-snapshot.h b/m-snapshot.h index 9cae2a0e..2e1e4526 100644 --- a/m-snapshot.h +++ b/m-snapshot.h @@ -158,8 +158,8 @@ for(int i = 0; i < SNAPSHOTI_MAX_BUFFER; i++) { \ M_GET_INIT_MOVE oplist(snap->data[i], org->data[i]); \ } \ - snap->flags = org->flags; \ - atomic_init (&org->flags, 0); \ + atomic_store (&snap->flags, atomic_load(&org->flags)); \ + atomic_store (&org->flags, SNAPSHOTI_FLAG(0,0,0,0) ); \ SNAPSHOTI_CONTRACT(snap); \ } \ ,) /* IF_METHOD (INIT_MOVE) */ \ @@ -174,8 +174,8 @@ for(int i = 0; i < SNAPSHOTI_MAX_BUFFER; i++) { \ M_GET_MOVE oplist(snap->data[i], org->data[i]); \ } \ - snap->flags = org->flags; \ - atomic_init(&org->flags, 0); \ + atomic_store (&snap->flags, atomic_load(&org->flags)); \ + atomic_store (&org->flags, SNAPSHOTI_FLAG(0,0,0,0) ); \ SNAPSHOTI_CONTRACT(snap); \ } \ ,) /* IF_METHOD (MOVE) */ \