Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Jun 2013 18:40:45 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r251694 - head/sys/sys
Message-ID:  <201306131840.r5DIejmx066194@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306131840.r5DIejmx066194>