2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-31 14:35:26 +00:00

Merge branch '2096-isc_refcount_decrement-needs-acquire-release-memory-ordering' into 'main'

Resolve "isc_refcount_decrement  needs acquire release memory ordering."

Closes #2096

See merge request isc-projects/bind9!4010
This commit is contained in:
Mark Andrews
2020-09-01 12:21:25 +00:00
2 changed files with 4 additions and 2 deletions

View File

@@ -65,6 +65,8 @@
atomic_fetch_or_explicit((o), (v), memory_order_release)
#define atomic_exchange_acq_rel(o, v) \
atomic_exchange_explicit((o), (v), memory_order_acq_rel)
#define atomic_fetch_sub_acq_rel(o, v) \
atomic_fetch_sub_explicit((o), (v), memory_order_acq_rel)
#define atomic_compare_exchange_weak_acq_rel(o, e, d) \
atomic_compare_exchange_weak_explicit( \
(o), (e), (d), memory_order_acq_rel, memory_order_acquire)

View File

@@ -118,7 +118,7 @@ isc_refcount_increment(isc_refcount_t *target) {
static inline uint_fast32_t
isc_refcount_decrement(isc_refcount_t *target) {
uint_fast32_t __v;
__v = (uint_fast32_t)atomic_fetch_sub_release(target, 1);
__v = (uint_fast32_t)atomic_fetch_sub_acq_rel(target, 1);
INSIST(__v > 0);
return (__v);
}
@@ -127,7 +127,7 @@ isc_refcount_decrement(isc_refcount_t *target) {
({ \
/* cppcheck-suppress shadowVariable */ \
uint_fast32_t __v; \
__v = atomic_fetch_sub_release(target, 1); \
__v = atomic_fetch_sub_acq_rel(target, 1); \
INSIST(__v > 0); \
__v; \
})