svn commit: r251694 - head/sys/sys
Ed Schouten
ed at FreeBSD.org
Thu Jun 13 18:40:45 UTC 2013
Author: ed
Date: Thu Jun 13 18:40:45 2013
New Revision: 251694
URL: http://svnweb.freebsd.org/changeset/base/251694
Log:
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.
Modified:
head/sys/sys/stdatomic.h
Modified: head/sys/sys/stdatomic.h
==============================================================================
--- head/sys/sys/stdatomic.h Thu Jun 13 18:39:17 2013 (r251693)
+++ head/sys/sys/stdatomic.h Thu Jun 13 18:40:45 2013 (r251694)
@@ -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)
More information about the svn-src-all
mailing list