|
|
|
@ -18,6 +18,13 @@ |
|
|
|
#include <my_atomic.h> |
|
|
|
#include <tap.h> |
|
|
|
|
|
|
|
/* at least gcc 3.4.5 and 3.4.6 (but not 3.2.3) on RHEL */ |
|
|
|
#if __GNUC__ == 3 && __GNUC_MINOR__ == 4 |
|
|
|
#define GCC_BUG_WORKAROUND volatile |
|
|
|
#else |
|
|
|
#define GCC_BUG_WORKAROUND |
|
|
|
#endif |
|
|
|
|
|
|
|
int32 a32,b32,c32; |
|
|
|
my_atomic_rwlock_t rwl; |
|
|
|
|
|
|
|
@ -30,7 +37,7 @@ int N; |
|
|
|
pthread_handler_t test_atomic_add_handler(void *arg) |
|
|
|
{ |
|
|
|
int m=*(int *)arg; |
|
|
|
int32 x; |
|
|
|
GCC_BUG_WORKAROUND int32 x; |
|
|
|
for (x=((int)((long)(&m))); m ; m--) |
|
|
|
{ |
|
|
|
x=x*m+0x87654321; |
|
|
|
@ -102,7 +109,7 @@ pthread_handler_t test_atomic_swap_handler(void *arg) |
|
|
|
pthread_handler_t test_atomic_cas_handler(void *arg) |
|
|
|
{ |
|
|
|
int m=*(int *)arg, ok; |
|
|
|
int32 x,y; |
|
|
|
GCC_BUG_WORKAROUND int32 x,y; |
|
|
|
for (x=((int)((long)(&m))); m ; m--) |
|
|
|
{ |
|
|
|
my_atomic_rwlock_wrlock(&rwl); |
|
|
|
|