SOLARIS: Fix some rx_atomic.h warnings
[openafs.git] / src / rx / rx_atomic.h
index 805c285..e59aad6 100644 (file)
@@ -120,13 +120,16 @@ typedef atomic_t rx_atomic_t;
 #define rx_atomic_read(X)        atomic_read(X)
 #define rx_atomic_inc(X)         atomic_inc(X)
 #define rx_atomic_inc_and_read(X) atomic_inc_return(X)
-#define rx_atomic_add(X, V)      atomic_add(X, V)
+#define rx_atomic_add(X, V)      atomic_add(V, X)
 #define rx_atomic_dec(X)         atomic_dec(X)
-#define rx_atomic_sub(X, V)      atomic_sub(X, V)
+#define rx_atomic_sub(X, V)      atomic_sub(V, X)
 
 #elif defined(AFS_SUN58_ENV)
+
+# include <atomic.h>
+
 typedef struct {
-    volatile int var;
+    volatile unsigned int var;
 } rx_atomic_t;
 
 static_inline void
@@ -161,7 +164,7 @@ rx_atomic_dec(rx_atomic_t *atomic) {
 
 static_inline void
 rx_atomic_sub(rx_atomic_t *atomic, int change) {
-    atomic_add_32(&object, 0 - change);
+    atomic_add_32(&atomic->var, 0 - change);
 }
 
 #elif defined(__GNUC__) && defined(HAVE_SYNC_FETCH_AND_ADD)
@@ -273,7 +276,7 @@ static_inline void
 rx_atomic_sub(rx_atomic_t *atomic, int change) {
     MUTEX_ENTER(&rx_atomic_mutex);
     atomic->var -= change;
-    MUTEX_ENTER(&rx_atomic_mutex);
+    MUTEX_EXIT(&rx_atomic_mutex);
 }
 
 #endif