RX: No userspace atomic_ops in Solaris pre-10
authorAndrew Deason <adeason@sinenomine.net>
Mon, 10 Jan 2011 23:13:15 +0000 (17:13 -0600)
committerDerrick Brashear <shadow@dementia.org>
Thu, 13 Jan 2011 03:25:54 +0000 (19:25 -0800)
The atomic_ops(3C) family of functions do not exist in userspace
before Solaris 10. So, only use them for rx_atomic operations if
we're on AFS_SUN510_ENV, or if we're in the kernel.

Also, include <sys/atomic.h> for kernel code and <atomic.h> for
userspace. Although they are currently equivalent, they are documented
as separate, and pre-10 lacks <atomic.h>.

Change-Id: Id71857efcd6460f8223302850b548754c19d076f
Reviewed-on: http://gerrit.openafs.org/3652
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/rx/rx_atomic.h

index ba80f9c..e920afc 100644 (file)
@@ -137,9 +137,13 @@ typedef atomic_t rx_atomic_t;
 #define rx_atomic_dec(X)         atomic_dec(X)
 #define rx_atomic_sub(X, V)      atomic_sub(V, X)
 
-#elif defined(AFS_SUN58_ENV)
+#elif defined(AFS_SUN510_ENV) || (defined(AFS_SUN58_ENV) && defined(KERNEL) && !defined(UKERNEL))
 
-# include <atomic.h>
+# if defined(KERNEL) && !defined(UKERNEL)
+#  include <sys/atomic.h>
+# else
+#  include <atomic.h>
+# endif
 
 typedef struct {
     volatile unsigned int var;