From: Willy Tarreau Date: Sun, 25 Nov 2018 18:28:23 +0000 (+0100) Subject: MINOR: thread: provide a set of lock initialisers X-Git-Tag: v1.9-dev9~137 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a8ae77da616cf8f20da72f5c69b969f7b9777ee6;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/include/common/hathreads.h b/include/common/hathreads.h index d2fd400e01..c5be9b2643 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 075866a609..eb3eb59fb2 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) {