From: Mark Vitale Date: Fri, 5 Oct 2018 14:39:23 +0000 (-0400) Subject: rx: remove rx_atomic bitops X-Git-Tag: openafs-devel-1_9_0~388 X-Git-Url: https://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=d0dbd0f12119f0e874ba30adec81061ac6ae27c7 rx: remove rx_atomic bitops The rx_atomic bitops were introduced with commit 1839cdbe268f4b19ac8e81ae78548f5c78e0c641 ("rx: atomic bit ops"). The last (only) reference to them was recently removed with commit 5ced6025b9f11fadbdf2e092bf40cc87499ed277 ("rx: Convert rxinit_status to rx_IsRunning()"). Remove the now unreferenced bitops. This commit is comprised of partial or complete reverts of the following commits: ae4ad509d35 rx: fix rx_atomic warnings under Solaris (partial) c16423ec4e6 rx: fix atomics on darwin (partial) 9dc6dd9858a rx: Fix AIX test_and_set_bit (complete) 1839cdbe268 rx: atomic bit ops (complete) Note: The rx_atomic bitops for Linux systems are known to be broken due to incorrect casting of rx_atomic_t into the unsigned long operand expected by the native Linux bitops. The failure modes include silent overruns on little-endian and incorrect results on big-endian. Do not merely revert this commit in order to bring these bitops back into the tree. Change-Id: I6b63519f63d370ccc8df816b4388487909c17dcd Reviewed-on: https://gerrit.openafs.org/13390 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot --- diff --git a/src/rx/rx_atomic.h b/src/rx/rx_atomic.h index df050e2..72ee054 100644 --- a/src/rx/rx_atomic.h +++ b/src/rx/rx_atomic.h @@ -77,34 +77,6 @@ rx_atomic_sub(rx_atomic_t *atomic, int change) { InterlockedExchangeAdd(&atomic->var, 0 - change); } -static_inline int -rx_atomic_test_bit(rx_atomic_t *atomic, int bit) { - return ((unsigned int) rx_atomic_read(atomic) & 1<var, bit); -} - -static_inline void -rx_atomic_clear_bit(rx_atomic_t *atomic, int bit) { - (void) InterlockedBitTestAndReset(&atomic->var, bit); -} - -static_inline int -rx_atomic_test_and_set_bit(rx_atomic_t *atomic, int bit) { - return InterlockedBitTestAndSet(&atomic->var, bit); -} - -static_inline int -rx_atomic_test_and_clear_bit(rx_atomic_t *atomic, int bit) { - return InterlockedBitTestAndReset(&atomic->var, bit); -} - #elif defined(AFS_AIX61_ENV) || defined(AFS_USR_AIX61_ENV) #include @@ -157,31 +129,6 @@ rx_atomic_sub(rx_atomic_t *atomic, int change) { fetch_and_add(&atomic->var, -change); } -static_inline int -rx_atomic_test_bit(rx_atomic_t *atomic, int bit) { - return ((unsigned int) rx_atomic_read(atomic) & 1<var, 1<var, ~(1<var, (1<var, ~(1<var); } - -static_inline int -rx_atomic_test_bit(rx_atomic_t *atomic, int bit) { - return ((unsigned int) rx_atomic_read(atomic) & 1<var); -} - -static_inline void -rx_atomic_clear_bit(rx_atomic_t *atomic, int bit) { - OSAtomicAnd32(~(1<var); -} - -static_inline int -rx_atomic_test_and_set_bit(rx_atomic_t *atomic, int bit) { - return ((OSAtomicOr32Orig(1<var) & 1<var) & 1< @@ -315,11 +220,6 @@ typedef atomic_t rx_atomic_t; #define rx_atomic_dec(X) atomic_dec(X) #define rx_atomic_dec_and_read(X) atomic_dec_return(X) #define rx_atomic_sub(X, V) atomic_sub(V, X) -#define rx_atomic_test_bit(X, B) test_bit(B, (unsigned long *) &(X)->counter) -#define rx_atomic_set_bit(X, B) set_bit(B, (unsigned long *) &(X)->counter) -#define rx_atomic_clear_bit(X, B) clear_bit(B, (unsigned long *) &(X)->counter) -#define rx_atomic_test_and_set_bit(X, B) test_and_set_bit(B, (unsigned long *) &(X)->counter) -#define rx_atomic_test_and_clear_bit(X, B) test_and_clear_bit(B, (unsigned long *) &(X)->counter) #elif defined(AFS_SUN510_ENV) || (defined(AFS_SUN5_ENV) && defined(KERNEL) && !defined(UKERNEL)) @@ -385,31 +285,6 @@ rx_atomic_sub(rx_atomic_t *atomic, int change) { atomic_add_32(&atomic->var, 0 - change); } -static_inline int -rx_atomic_test_bit(rx_atomic_t *atomic, int bit) { - return ((unsigned int) rx_atomic_read(atomic) & 1<var, 1<var, ~(1<var, bit) == -1); -} - -static_inline int -rx_atomic_test_and_clear_bit(rx_atomic_t *atomic, int bit) { - return (atomic_clear_long_excl(&atomic->var, bit) == 0); -} - #elif defined(__GNUC__) && defined(HAVE_SYNC_FETCH_AND_ADD) typedef struct { @@ -461,31 +336,6 @@ rx_atomic_sub(rx_atomic_t *atomic, int change) { (void)__sync_fetch_and_sub(&atomic->var, change); } -static_inline int -rx_atomic_test_bit(rx_atomic_t *atomic, int bit) { - return ((unsigned int) rx_atomic_read(atomic) & 1<var, 1<var, ~(1<var, 1<var, ~(1<var |= (1<var &= ~(1<var; - atomic->var |= 1<var; - atomic->var &= ~(1<