Commit abb8813a authored by Mukund Sivaraman's avatar Mukund Sivaraman
Browse files

Make isc_refcount_current() atomically read the counter value (#46074)

parent 2495de04
4741. [bug] Make isc_refcount_current() atomically read the
counter value. [RT #46074]
4740. [cleanup] Avoid triggering format-truncated warnings. [RT #46107]
 
4739. [cleanup] Address clang static analysis warnings. [RT #45952]
......
......@@ -104,11 +104,13 @@ typedef struct isc_refcount {
#endif
} isc_refcount_t;
#define isc_refcount_destroy(rp) REQUIRE((rp)->refs == 0)
#define isc_refcount_current(rp) ((unsigned int)((rp)->refs))
#if defined(ISC_REFCOUNT_HAVESTDATOMIC)
#define isc_refcount_current(rp) \
((unsigned int)(atomic_load_explicit(&(rp)->refs, \
memory_order_relaxed)))
#define isc_refcount_destroy(rp) REQUIRE(isc_refcount_current(rp) == 0)
#define isc_refcount_increment0(rp, tp) \
do { \
unsigned int *_tmp = (unsigned int *)(tp); \
......@@ -143,6 +145,10 @@ typedef struct isc_refcount {
#else /* ISC_REFCOUNT_HAVESTDATOMIC */
#define isc_refcount_current(rp) \
((unsigned int)(isc_atomic_xadd(&(rp)->refs, 0)))
#define isc_refcount_destroy(rp) REQUIRE(isc_refcount_current(rp) == 0)
#define isc_refcount_increment0(rp, tp) \
do { \
unsigned int *_tmp = (unsigned int *)(tp); \
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment