Remove buffer prefix from buffers.

See commit on shared pointer.
This commit is contained in:
Patrick Pelissier committed 2017-07-25 22:52:19 +02:00
1 parent 8a716cd4f4
commit a69c67e850
4 files changed
+40 -40

No files matched your search

+2 -2
View File
@@ -1647,7 +1647,7 @@ This method is only defined if the type of the element defines a HASH method its
#### BUFFER\_DEF(name, type, size, policy[, oplist])
Define the buffer 'buffer\_##name##\_t' and its associated methods as "static inline" functions.
Define the buffer 'name##\_t' and its associated methods as "static inline" functions.
A buffer is a fixed size queue or stack.
'name' shall be a C identifier which will be used to identify the container.
@@ -1673,7 +1673,7 @@ The object oplist is expected to have the following operators (INIT, INIT\_SET,
Example:
BUFFER_DEF(uint, unsigned int, 10, BUFFER_QUEUE|BUFFER_BLOCKING)
BUFFER_DEF(buffer_uint, unsigned int, 10, BUFFER_QUEUE|BUFFER_BLOCKING)
buffer_uint_t g_buff;
+1 -1
View File
@@ -89,7 +89,7 @@ SHARED_PTR_DEF(shared_bigdata, bigdata_t, (INIT(bigdata_init), CLEAR(bigdata_cle
* - we change the semantics of _push / _pop into buffer as push a new item and pop it as a move (ideal semantics for shared_ptr interface).
*/
#define MY_QUEUE_SIZE 10
BUFFER_DEF(bigdata, shared_bigdata_t, MY_QUEUE_SIZE,
BUFFER_DEF(buffer_bigdata, shared_bigdata_t, MY_QUEUE_SIZE,
BUFFER_QUEUE|BUFFER_PUSH_INIT_POP_MOVE, SHARED_PTR_OPLIST(shared_bigdata))
/* Let's build a Thread synchros tree:
+31 -31
View File
@@ -46,8 +46,8 @@ typedef enum {
USAGE: BUFFER_DEF(name, type, size_of_buffer_or_0, policy[, oplist]) */
#define BUFFER_DEF(name, type, m_size, ... ) \
M_IF_NARGS_EQ1(__VA_ARGS__) \
(BUFFERI_DEF2(name, type, m_size,__VA_ARGS__, (), M_C3(buffer_, name,_t)), \
BUFFERI_DEF2(name, type, m_size,__VA_ARGS__, M_C3(buffer_, name,_t)))
(BUFFERI_DEF2(name, type, m_size,__VA_ARGS__, (), M_C(name,_t)), \
BUFFERI_DEF2(name, type, m_size,__VA_ARGS__, M_C(name,_t)))
/********************************** INTERNAL ************************************/
@@ -68,17 +68,17 @@ typedef enum {
#define BUFFERI_DEF2(name, type, m_size, policy, oplist, buffer_t) \
\
typedef struct M_C3(buffer_, name, _s) { \
typedef struct M_C(name, _s) { \
m_mutex_t mutex; \
m_cond_t there_is_data; \
m_cond_t there_is_room_for_data; \
BUFFERI_IF_CTE_SIZE(m_size)( ,size_t size;) \
size_t idx_prod, idx_cons, number, overwrite; \
size_t idx_prod, idx_cons, number, overwrite; \
type *data; \
} buffer_t[1]; \
\
static inline void \
M_C3(buffer_, name, _init)(buffer_t v, size_t size) \
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); \
@@ -103,7 +103,7 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \
} \
\
static inline void \
M_C3(bufferi_, name, _clear_obj)(buffer_t v) \
M_C(name, _int_clear_obj)(buffer_t v) \
{ \
BUFFERI_CONTRACT(v,m_size); \
if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) { \
@@ -122,12 +122,12 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \
v->idx_prod = v->idx_cons = v->number = 0; \
BUFFERI_CONTRACT(v,m_size); \
} \
\
\
static inline void \
M_C3(buffer_, name, _clear)(buffer_t v) \
M_C(name, _clear)(buffer_t v) \
{ \
BUFFERI_CONTRACT(v,m_size); \
M_C3(bufferi_, name, _clear_obj)(v); \
M_C(name, _int_clear_obj)(v); \
M_GET_FREE oplist (v->data); \
v->data = NULL; \
v->overwrite = 0; \
@@ -137,15 +137,15 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \
m_cond_clear(v->there_is_room_for_data); \
} \
} \
\
\
static inline void \
M_C3(buffer_, name, _clean)(buffer_t v) \
M_C(name, _clean)(buffer_t v) \
{ \
BUFFERI_CONTRACT(v,m_size); \
if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) \
m_mutex_lock(v->mutex); \
if (BUFFERI_POLICY_P((policy), BUFFER_PUSH_INIT_POP_MOVE)) \
M_C3(bufferi_, name, _clear_obj)(v); \
M_C(name, _int_clear_obj)(v); \
else \
v->idx_prod = v->idx_cons = v->number = 0; \
if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) { \
@@ -154,38 +154,38 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \
} \
BUFFERI_CONTRACT(v,m_size); \
} \
\
\
static inline bool \
M_C3(buffer_, name, _empty_p)(const buffer_t v) \
M_C(name, _empty_p)(const buffer_t v) \
{ \
BUFFERI_CONTRACT(v,m_size); \
return v->number == 0; \
} \
\
\
static inline bool \
M_C3(buffer_, name, _full_p)(const buffer_t v) \
M_C(name, _full_p)(const buffer_t v) \
{ \
BUFFERI_CONTRACT(v,m_size); \
return v->number == BUFFERI_SIZE(m_size); \
} \
\
\
static inline size_t \
M_C3(buffer_, name, _size)(const buffer_t v) \
M_C(name, _size)(const buffer_t v) \
{ \
BUFFERI_CONTRACT(v,m_size); \
return v->number; \
} \
\
\
static inline bool \
M_C3(buffer_, name, _push)(buffer_t v, type const data) \
M_C(name, _push)(buffer_t v, type const data) \
{ \
BUFFERI_CONTRACT(v,m_size); \
\
\
/* BUFFER lock */ \
if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) { \
m_mutex_lock(v->mutex); \
while (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_OVERWRITE) \
&& M_C3(buffer_, name, _full_p)(v)) { \
&& M_C(name, _full_p)(v)) { \
if (BUFFERI_POLICY_P((policy), BUFFER_UNBLOCKING)) { \
m_mutex_unlock(v->mutex); \
return false; \
@@ -193,9 +193,9 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \
m_cond_wait(v->there_is_room_for_data, v->mutex); \
} \
} else if (!BUFFERI_POLICY_P((policy), BUFFER_PUSH_OVERWRITE) \
&& M_C3(buffer_, name, _full_p)(v)) \
&& M_C(name, _full_p)(v)) \
return false; \
\
\
/* INDEX computation if we have to overwrite the last element */ \
if (M_UNLIKELY (BUFFERI_POLICY_P((policy), BUFFER_PUSH_OVERWRITE) \
&& v->number == BUFFERI_SIZE(m_size) )) { \
@@ -236,26 +236,26 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \
} \
\
static inline bool \
M_C3(buffer_, name, _pop)(type *data, buffer_t v) \
M_C(name, _pop)(type *data, buffer_t v) \
{ \
BUFFERI_CONTRACT(v,m_size); \
\
/* BUFFER lock */ \
if (!BUFFERI_POLICY_P((policy), BUFFER_THREAD_UNSAFE)) { \
m_mutex_lock(v->mutex); \
while (M_C3(buffer_, name, _empty_p)(v)) { \
while (M_C(name, _empty_p)(v)) { \
if (BUFFERI_POLICY_P((policy), BUFFER_UNBLOCKING)) { \
m_mutex_unlock(v->mutex); \
return false; \
} \
m_cond_wait(v->there_is_data, v->mutex); \
} \
} else if (M_C3(buffer_, name, _empty_p)(v)) \
} else if (M_C(name, _empty_p)(v)) \
return false; \
\
\
/* POP data */ \
if (!BUFFERI_POLICY_P((policy), BUFFER_STACK)) { \
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]); \
} else { \
M_DO_INIT_MOVE (oplist, *data, v->data[v->idx_cons]); \
@@ -282,11 +282,11 @@ M_C3(buffer_, name, _init)(buffer_t v, size_t size) \
} \
\
static inline size_t \
M_C3(buffer_, name, _overwrite)(const buffer_t v) \
M_C(name, _overwrite)(const buffer_t v) \
{ \
return v->overwrite; \
} \
// NOTE: SET & INIT_SET are deliberatly missing. TBC if it the right way.
// NOTE: There is no oplist defined for this container.
+6 -6
View File
@@ -25,20 +25,20 @@
#include "coverage.h"
START_COVERAGE
// Define a fixed queue of unsigned int
BUFFER_DEF(uint, unsigned int, 10, BUFFER_QUEUE|BUFFER_BLOCKING)
BUFFER_DEF(buffer_uint, unsigned int, 10, BUFFER_QUEUE|BUFFER_BLOCKING)
END_COVERAGE
// Define a variable stack of float
BUFFER_DEF(floats, float, 0, BUFFER_STACK|BUFFER_BLOCKING)
BUFFER_DEF(buffer_floats, float, 0, BUFFER_STACK|BUFFER_BLOCKING)
// Define a fixed stack of char
BUFFER_DEF(char, char, 10, BUFFER_STACK|BUFFER_UNBLOCKING)
BUFFER_DEF(buffer_char, char, 10, BUFFER_STACK|BUFFER_UNBLOCKING)
// Define a fixed queue of long long
BUFFER_DEF(llong, long long, 16, BUFFER_QUEUE|BUFFER_THREAD_UNSAFE|BUFFER_UNBLOCKING)
BUFFER_DEF(buffer_llong, long long, 16, BUFFER_QUEUE|BUFFER_THREAD_UNSAFE|BUFFER_UNBLOCKING)
#include <gmp.h>
BUFFER_DEF(mpz, mpz_t, 32, BUFFER_QUEUE, (INIT(mpz_init), INIT_SET(mpz_init_set), SET(mpz_set), CLEAR(mpz_clear)))
BUFFER_DEF(buffer_mpz, mpz_t, 32, BUFFER_QUEUE, (INIT(mpz_init), INIT_SET(mpz_init_set), SET(mpz_set), CLEAR(mpz_clear)))
buffer_uint_t g_buff;
@@ -208,7 +208,7 @@ static test_t *test_new(void)
return ishared_itest_init(p);
}
BUFFER_DEF(itest, test_t *, 16, BUFFER_PUSH_INIT_POP_MOVE,
BUFFER_DEF(buffer_itest, test_t *, 16, BUFFER_PUSH_INIT_POP_MOVE,
ISHARED_PTR_OPLIST(ishared_itest))
static buffer_itest_t comm1;