From a8ae77da616cf8f20da72f5c69b969f7b9777ee6 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 25 Nov 2018 19:28:23 +0100 Subject: [PATCH] MINOR: thread: provide a set of lock initialisers This patch adds ha_spin_init() and ha_rwlock_init() which are used as a callback to initialise locks at boot time. They perform exactly the same as HA_SPIN_INIT() or HA_RWLOCK_INIT() but from within a real function. --- include/common/hathreads.h | 3 +++ src/hathreads.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/include/common/hathreads.h b/include/common/hathreads.h index d2fd400e0..c5be9b264 100644 --- a/include/common/hathreads.h +++ b/include/common/hathreads.h @@ -948,6 +948,9 @@ static __inline int __ha_cas_dw(void *target, void *compare, void *set) #define __ha_barrier_full __sync_synchronize #endif +void ha_spin_init(HA_SPINLOCK_T *l); +void ha_rwlock_init(HA_RWLOCK_T *l); + #endif /* USE_THREAD */ static inline void __ha_compiler_barrier(void) diff --git a/src/hathreads.c b/src/hathreads.c index 075866a60..eb3eb59fb 100644 --- a/src/hathreads.c +++ b/src/hathreads.c @@ -92,6 +92,18 @@ void thread_release() thread_harmless_end(); } +/* these calls are used as callbacks at init time */ +void ha_spin_init(HA_SPINLOCK_T *l) +{ + HA_SPIN_INIT(l); +} + +/* these calls are used as callbacks at init time */ +void ha_rwlock_init(HA_RWLOCK_T *l) +{ + HA_RWLOCK_INIT(l); +} + __attribute__((constructor)) static void __hathreads_init(void) {