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>