Update comments

This commit is contained in:
Patrick Pelissier committed 2018-01-06 21:58:30 +01:00
1 parent 38fe24085f
commit 362fbb39d4
1 file changed
+19 -3
+19 -3
View File
@@ -201,6 +201,10 @@ M_C(name, _init)(buffer_t v, size_t size) \
M_C(name, _empty_p)(buffer_t v) \ M_C(name, _empty_p)(buffer_t v) \
{ \ { \
BUFFERI_CONTRACT(v,m_size); \ BUFFERI_CONTRACT(v,m_size); \
/* If the buffer has been configured with deferred pop \
we considered the queue as empty when the number of \
deferred pop has reached 0, not the number of items in the \
buffer is 0. */ \
if (BUFFERI_POLICY_P(policy, BUFFER_DEFERRED_POP)) \ if (BUFFERI_POLICY_P(policy, BUFFER_DEFERRED_POP)) \
return atomic_load (&v->number[1]) == 0; \ return atomic_load (&v->number[1]) == 0; \
else \ else \
@@ -244,7 +248,7 @@ M_C(name, _init)(buffer_t v, size_t size) \
\ \
/* INDEX computation if we have to overwrite the last element */ \ /* INDEX computation if we have to overwrite the last element */ \
if (M_UNLIKELY (BUFFERI_POLICY_P((policy), BUFFER_PUSH_OVERWRITE) \ if (M_UNLIKELY (BUFFERI_POLICY_P((policy), BUFFER_PUSH_OVERWRITE) \
&& atomic_load (&v->number[0]) == BUFFERI_SIZE(m_size) )) { \ && M_C(name, _full_p)(v))) { \
v->overwrite++; \ v->overwrite++; \
/* Let's clear the last element to overwrite it */ \ /* Let's clear the last element to overwrite it */ \
if (!BUFFERI_POLICY_P((policy), BUFFER_STACK)) { \ if (!BUFFERI_POLICY_P((policy), BUFFER_STACK)) { \
@@ -252,25 +256,31 @@ M_C(name, _init)(buffer_t v, size_t size) \
} else { \ } else { \
(v->idx_prod) --; \ (v->idx_prod) --; \
} \ } \
/* Let's decrement the number of elements of the buffer */ \
atomic_store (&v->number[0], atomic_load(&v->number[0]) - 1); \ atomic_store (&v->number[0], atomic_load(&v->number[0]) - 1); \
if (BUFFERI_POLICY_P((policy), BUFFER_DEFERRED_POP)) \ if (BUFFERI_POLICY_P((policy), BUFFER_DEFERRED_POP)) \
atomic_store (&v->number[1], atomic_load(&v->number[1]) - 1); \ atomic_store (&v->number[1], atomic_load(&v->number[1]) - 1); \
/* Let's call the CLEAR method if needed */ \
if (BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \ if (BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \
M_GET_CLEAR oplist(v->data[v->idx_prod]); \ M_GET_CLEAR oplist(v->data[v->idx_prod]); \
} \ } \
} \ } \
\ \
/* PUSH data */ \ /* PUSH data in the buffer */ \
if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \ if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \
M_GET_SET oplist (v->data[v->idx_prod], data); \ M_GET_SET oplist (v->data[v->idx_prod], data); \
} else { \ } else { \
M_GET_INIT_SET oplist(v->data[v->idx_prod], data); \ M_GET_INIT_SET oplist(v->data[v->idx_prod], data); \
} \ } \
\
/* Increment production INDEX of the buffer */ \
if (!BUFFERI_POLICY_P((policy), BUFFER_STACK)) { \ if (!BUFFERI_POLICY_P((policy), BUFFER_STACK)) { \
v->idx_prod = (v->idx_prod +1) % BUFFERI_SIZE(m_size); \ v->idx_prod = (v->idx_prod +1) % BUFFERI_SIZE(m_size); \
} else { \ } else { \
(v->idx_prod) ++; \ (v->idx_prod) ++; \
} \ } \
\
/* Increment number of elements of the buffer */ \
atomic_store (&v->number[0], atomic_load(&v->number[0]) + 1); \ atomic_store (&v->number[0], atomic_load(&v->number[0]) + 1); \
if (BUFFERI_POLICY_P((policy), BUFFER_DEFERRED_POP)) \ if (BUFFERI_POLICY_P((policy), BUFFER_DEFERRED_POP)) \
atomic_store (&v->number[1], atomic_load(&v->number[1]) + 1); \ atomic_store (&v->number[1], atomic_load(&v->number[1]) + 1); \
@@ -305,8 +315,9 @@ M_C(name, _init)(buffer_t v, size_t size) \
return false; \ return false; \
BUFFERI_PROTECTED_CONTRACT(v, m_size); \ BUFFERI_PROTECTED_CONTRACT(v, m_size); \
\ \
/* POP data */ \ /* POP data from the buffer and update INDEX */ \
if (!BUFFERI_POLICY_P((policy), BUFFER_STACK)) { \ if (!BUFFERI_POLICY_P((policy), BUFFER_STACK)) { \
/* FIFO queue */ \
if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \ if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \
M_GET_SET oplist (*data, v->data[v->idx_cons]); \ M_GET_SET oplist (*data, v->data[v->idx_cons]); \
} else { \ } else { \
@@ -314,6 +325,7 @@ M_C(name, _init)(buffer_t v, size_t size) \
} \ } \
v->idx_cons = (v->idx_cons +1) % BUFFERI_SIZE(m_size); \ v->idx_cons = (v->idx_cons +1) % BUFFERI_SIZE(m_size); \
} else { \ } else { \
/* STACK queue */ \
v->idx_prod --; \ v->idx_prod --; \
if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \ if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \
M_GET_SET oplist (*data, v->data[v->idx_prod]); \ M_GET_SET oplist (*data, v->data[v->idx_prod]); \
@@ -321,10 +333,13 @@ M_C(name, _init)(buffer_t v, size_t size) \
M_DO_INIT_MOVE (oplist, *data, v->data[v->idx_prod]); \ M_DO_INIT_MOVE (oplist, *data, v->data[v->idx_prod]); \
} \ } \
} \ } \
\
/* Decrement number of elements in the buffer */ \
if (!BUFFERI_POLICY_P((policy), BUFFER_DEFERRED_POP)) \ if (!BUFFERI_POLICY_P((policy), BUFFER_DEFERRED_POP)) \
atomic_store (&v->number[0], atomic_load(&v->number[0]) - 1); \ atomic_store (&v->number[0], atomic_load(&v->number[0]) - 1); \
else \ else \
atomic_store (&v->number[1], atomic_load(&v->number[1]) - 1); \ atomic_store (&v->number[1], atomic_load(&v->number[1]) - 1); \
\
/* BUFFER unlock */ \ /* BUFFER unlock */ \
if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) { \ if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) { \
m_cond_signal(v->there_is_room_for_data); \ m_cond_signal(v->there_is_room_for_data); \
@@ -351,6 +366,7 @@ M_C(name, _init)(buffer_t v, size_t size) \
static inline void \ static inline void \
M_C(name, _pop_release)(buffer_t v) \ M_C(name, _pop_release)(buffer_t v) \
{ \ { \
/* Decrement the effective number of elements in the buffer */ \
if (BUFFERI_POLICY_P((policy), BUFFER_DEFERRED_POP)) \ if (BUFFERI_POLICY_P((policy), BUFFER_DEFERRED_POP)) \
atomic_store (&v->number[0], atomic_load(&v->number[0]) - 1); \ atomic_store (&v->number[0], atomic_load(&v->number[0]) - 1); \
} \ } \