From: Arnaud Giersch Date: Tue, 5 Feb 2019 11:05:51 +0000 (+0100) Subject: Use C11 atomic_flag instead of gcc builtins. X-Git-Tag: v3_22~390^2~6 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/164cf14115dd6fba6fe3b3621e2514048935acad Use C11 atomic_flag instead of gcc builtins. --- diff --git a/src/xbt/mallocator.c b/src/xbt/mallocator.c index 041f82c1ea..3469e222e7 100644 --- a/src/xbt/mallocator.c +++ b/src/xbt/mallocator.c @@ -46,13 +46,13 @@ static int initialization_done = 0; static inline void lock_reset(xbt_mallocator_t m) { - m->lock = 0; + atomic_flag_clear(&m->lock); } static inline void lock_acquire(xbt_mallocator_t m) { if (initialization_done > 1) { - while (__atomic_test_and_set(&m->lock, __ATOMIC_ACQUIRE)) + while (atomic_flag_test_and_set(&m->lock)) /* nop */; } } @@ -60,7 +60,7 @@ static inline void lock_acquire(xbt_mallocator_t m) static inline void lock_release(xbt_mallocator_t m) { if (initialization_done > 1) - __atomic_clear(&m->lock, __ATOMIC_RELEASE); + atomic_flag_clear(&m->lock); } /** diff --git a/src/xbt/mallocator_private.h b/src/xbt/mallocator_private.h index c63d80c5c8..77f9149c4a 100644 --- a/src/xbt/mallocator_private.h +++ b/src/xbt/mallocator_private.h @@ -8,6 +8,7 @@ #ifndef XBT_MALLOCATOR_PRIVATE_H #define XBT_MALLOCATOR_PRIVATE_H +#include #include typedef struct s_xbt_mallocator { @@ -17,7 +18,7 @@ typedef struct s_xbt_mallocator { pvoid_f_void_t new_f; /* function to call when we are running out of objects */ void_f_pvoid_t free_f; /* function to call when we have got too many objects */ void_f_pvoid_t reset_f; /* function to call when an object is released by the user */ - char lock; /* lock to ensure the mallocator is thread-safe */ + atomic_flag lock; /* lock to ensure the mallocator is thread-safe */ } s_xbt_mallocator_t; #endif