mirror of
https://github.com/opnsense/src.git
synced 2026-04-05 01:15:30 -04:00
Minor improvements to <stdatomic.h>.
- Define __SYNC_ATOMICS in case we're using the __sync_*() API. This is not used by <stdatomic.h> itself, but may be useful for some of the intrinsics code to determine whether it should build the machine-dependent intrinsic functions. - Make is_lock_free() work in kernelspace. For now, assume atomics in kernelspace are always lock free. This is a quite reasonable assumption, as we surely shouldn't implement the atomic fallbacks for arbitrary sizes.
This commit is contained in:
parent
ba10b444d0
commit
87d2d3599e
1 changed files with 8 additions and 2 deletions
|
|
@ -37,7 +37,9 @@
|
|||
#define __CLANG_ATOMICS
|
||||
#elif __GNUC_PREREQ__(4, 7)
|
||||
#define __GNUC_ATOMICS
|
||||
#elif !defined(__GNUC__)
|
||||
#elif defined(__GNUC__)
|
||||
#define __SYNC_ATOMICS
|
||||
#else
|
||||
#error "stdatomic.h does not support your compiler"
|
||||
#endif
|
||||
|
||||
|
|
@ -156,7 +158,11 @@ enum memory_order {
|
|||
* 7.17.5 Lock-free property.
|
||||
*/
|
||||
|
||||
#if defined(__CLANG_ATOMICS)
|
||||
#if defined(_KERNEL)
|
||||
/* Atomics in kernelspace are always lock-free. */
|
||||
#define atomic_is_lock_free(obj) \
|
||||
((void)(obj), (_Bool)1)
|
||||
#elif defined(__CLANG_ATOMICS)
|
||||
#define atomic_is_lock_free(obj) \
|
||||
__atomic_is_lock_free(sizeof(*(obj)), obj)
|
||||
#elif defined(__GNUC_ATOMICS)
|
||||
|
|
|
|||
Loading…
Reference in a new issue