summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
b5780fc)
* Initialize all fields of 'struct urcu_tls' to avoid :
sorry, unimplemented: non-trivial designated initializers not supported
* Cast void* to proper type pointers to avoid :
error: invalid conversion from ‘void*’ to ...
Change-Id: I654f924324cda2eaea723f4a0759d706b2a2bf40
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
type *__tls_access_ ## name(void) \
{ \
static struct urcu_tls __tls_ ## name = { \
type *__tls_access_ ## name(void) \
{ \
static struct urcu_tls __tls_ ## name = { \
.init_mutex = PTHREAD_MUTEX_INITIALIZER,\
.init_done = 0, \
}; \
.init_mutex = PTHREAD_MUTEX_INITIALIZER,\
.init_done = 0, \
}; \
pthread_mutex_unlock(&__tls_ ## name.init_mutex); \
} \
cmm_smp_rmb(); /* read init_done before getting key */ \
pthread_mutex_unlock(&__tls_ ## name.init_mutex); \
} \
cmm_smp_rmb(); /* read init_done before getting key */ \
- __tls_p = pthread_getspecific(__tls_ ## name.key); \
+ __tls_p = (__typeof__(type) *) pthread_getspecific(__tls_ ## name.key); \
if (caa_unlikely(__tls_p == NULL)) { \
if (caa_unlikely(__tls_p == NULL)) { \
- __tls_p = calloc(1, sizeof(type)); \
+ __tls_p = (__typeof__(type) *) calloc(1, sizeof(type)); \
do_init \
(void) pthread_setspecific(__tls_ ## name.key, \
__tls_p); \
do_init \
(void) pthread_setspecific(__tls_ ## name.key, \
__tls_p); \