mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-25 02:47:54 -04:00
chg: dev: Use atomics for CMM_{LOAD,STORE}_SHARED with ThreadSanitizer
Upstream has removed the atomics implementation of CMM_LOAD_SHARED and CMM_STORE_SHARED as these can be used also with non-stdatomics types. As we only use the CMM api with stdatomics types, we can restore the previous behaviour to prevent ThreadSanitizer warnings. Closes #5660 Merge branch '5660-use-atomics-for-CMM-api-with-thread-sanitizer' into 'main' See merge request isc-projects/bind9!11288
This commit is contained in:
commit
6fd209b6f0
1 changed files with 29 additions and 0 deletions
|
|
@ -141,3 +141,32 @@
|
|||
|
||||
#endif /* !defined(caa_container_of_check_null) */
|
||||
/* clang-format on */
|
||||
|
||||
#ifdef __SANITIZE_THREAD__
|
||||
|
||||
/*
|
||||
* Restore the behaviour removed in
|
||||
* https://github.com/urcu/userspace-rcu/commit/5cd787d0f953182a23d340669b20b150fd50c18c
|
||||
* as we only use CMM_LOAD_SHARED() and CMM_STORE_SHARED() with atomic types.
|
||||
*/
|
||||
|
||||
#undef CMM_LOAD_SHARED
|
||||
#define CMM_LOAD_SHARED(x) \
|
||||
__atomic_load_n(cmm_cast_volatile(&(x)), __ATOMIC_RELAXED)
|
||||
|
||||
#undef _CMM_LOAD_SHARED
|
||||
#define _CMM_LOAD_SHARED(x) CMM_LOAD_SHARED(x)
|
||||
|
||||
#undef CMM_STORE_SHARED
|
||||
#define CMM_STORE_SHARED(x, v) \
|
||||
__extension__({ \
|
||||
__typeof__(v) _v = (v); \
|
||||
__atomic_store_n(cmm_cast_volatile(&(x)), _v, \
|
||||
__ATOMIC_RELAXED); \
|
||||
_v; \
|
||||
})
|
||||
|
||||
#undef _CMM_STORE_SHARED
|
||||
#define _CMM_STORE_SHARED(x, v) CMM_STORE_SHARED(x, v)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue