Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F153562123
D16585.id46361.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D16585.id46361.diff
View Options
Index: head/sys/sys/cdefs.h
===================================================================
--- head/sys/sys/cdefs.h
+++ head/sys/sys/cdefs.h
@@ -268,7 +268,7 @@
#endif
#if !defined(__cplusplus) && !__has_extension(c_atomic) && \
- !__has_extension(cxx_atomic)
+ !__has_extension(cxx_atomic) && !__GNUC_PREREQ__(4, 7)
/*
* No native support for _Atomic(). Place object in structure to prevent
* most forms of direct non-atomic access.
Index: head/sys/sys/stdatomic.h
===================================================================
--- head/sys/sys/stdatomic.h
+++ head/sys/sys/stdatomic.h
@@ -171,12 +171,9 @@
/* Atomics in kernelspace are always lock-free. */
#define atomic_is_lock_free(obj) \
((void)(obj), (_Bool)1)
-#elif defined(__CLANG_ATOMICS)
+#elif defined(__CLANG_ATOMICS) || defined(__GNUC_ATOMICS)
#define atomic_is_lock_free(obj) \
__atomic_is_lock_free(sizeof(*(obj)), obj)
-#elif defined(__GNUC_ATOMICS)
-#define atomic_is_lock_free(obj) \
- __atomic_is_lock_free(sizeof((obj)->__val), &(obj)->__val)
#else
#define atomic_is_lock_free(obj) \
((void)(obj), sizeof((obj)->__val) <= sizeof(void *))
@@ -260,28 +257,28 @@
#elif defined(__GNUC_ATOMICS)
#define atomic_compare_exchange_strong_explicit(object, expected, \
desired, success, failure) \
- __atomic_compare_exchange_n(&(object)->__val, expected, \
+ __atomic_compare_exchange_n(object, expected, \
desired, 0, success, failure)
#define atomic_compare_exchange_weak_explicit(object, expected, \
desired, success, failure) \
- __atomic_compare_exchange_n(&(object)->__val, expected, \
+ __atomic_compare_exchange_n(object, expected, \
desired, 1, success, failure)
#define atomic_exchange_explicit(object, desired, order) \
- __atomic_exchange_n(&(object)->__val, desired, order)
+ __atomic_exchange_n(object, desired, order)
#define atomic_fetch_add_explicit(object, operand, order) \
- __atomic_fetch_add(&(object)->__val, operand, order)
+ __atomic_fetch_add(object, operand, order)
#define atomic_fetch_and_explicit(object, operand, order) \
- __atomic_fetch_and(&(object)->__val, operand, order)
+ __atomic_fetch_and(object, operand, order)
#define atomic_fetch_or_explicit(object, operand, order) \
- __atomic_fetch_or(&(object)->__val, operand, order)
+ __atomic_fetch_or(object, operand, order)
#define atomic_fetch_sub_explicit(object, operand, order) \
- __atomic_fetch_sub(&(object)->__val, operand, order)
+ __atomic_fetch_sub(object, operand, order)
#define atomic_fetch_xor_explicit(object, operand, order) \
- __atomic_fetch_xor(&(object)->__val, operand, order)
+ __atomic_fetch_xor(object, operand, order)
#define atomic_load_explicit(object, order) \
- __atomic_load_n(&(object)->__val, order)
+ __atomic_load_n(object, order)
#define atomic_store_explicit(object, desired, order) \
- __atomic_store_n(&(object)->__val, desired, order)
+ __atomic_store_n(object, desired, order)
#else
#define __atomic_apply_stride(object, operand) \
(((__typeof__((object)->__val))0) + (operand))
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Apr 22, 10:34 PM (7 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31983735
Default Alt Text
D16585.id46361.diff (2 KB)
Attached To
Mode
D16585: Make the system C11 atomics headers fully compatible with external GCC.
Attached
Detach File
Event Timeline
Log In to Comment