diff --git a/testsuite/tests/rts/testwsdeque.c b/testsuite/tests/rts/testwsdeque.c index 1c211ab80a0b74e23365a28d5fb9787f0e990164..dab68396f8830f8ee98b6918ba7365cad1d4f0a4 100644 --- a/testsuite/tests/rts/testwsdeque.c +++ b/testsuite/tests/rts/testwsdeque.c @@ -34,16 +34,16 @@ void * myStealWSDeque_ (WSDeque *q, uint32_t n) { void * stolen; - + // Can't do this on someone else's spark pool: -// ASSERT_WSDEQUE_INVARIANTS(q); - +// ASSERT_WSDEQUE_INVARIANTS(q); + // NB. these loads must be ordered, otherwise there is a race // between steal and pop. StgWord t = ACQUIRE_LOAD(&q->top); SEQ_CST_FENCE(); StgWord b = ACQUIRE_LOAD(&q->bottom); - + void *result = NULL; if (t < b) { /* Non-empty queue */ @@ -59,11 +59,11 @@ void * myStealWSDeque (WSDeque *q, uint32_t n) { void *stolen; - - do { + + do { stolen = myStealWSDeque_(q,n); } while (stolen == NULL && !looksEmptyWSDeque(q)); - + return stolen; } @@ -89,15 +89,15 @@ void work(void *p, uint32_t n) // debugBelch("work %ld %d\n", p, n); val = *(StgWord *)p; - if (val != 0) { - fflush(stdout); - fflush(stderr); - barf("FAIL: %ld %d %d", p, n, val); + if (val != 0) { + fflush(stdout); + fflush(stderr); + barf("FAIL: %p %" FMT_Word32 " %" FMT_Word, p, n, val); } *(StgWord*)p = n+10; } - -void OSThreadProcAttr thief(void *info) + +void* OSThreadProcAttr thief(void *info) { void *p; StgWord n; @@ -114,6 +114,7 @@ void OSThreadProcAttr thief(void *info) if (p != NULL) { work(p,n+1); count++; } } debugBelch("thread %ld finished, stole %d", n, count); + return NULL; } int main(int argc, char*argv[]) @@ -124,13 +125,13 @@ int main(int argc, char*argv[]) q = newWSDeque(1024); done = 0; - + for (n=0; n < SCRATCH_SIZE; n++) { scratch[n] = 0; } for (n=0; n < THREADS; n++) { - createOSThread(&ids[n], "thief", thief, (void*)(StgWord)n); + createOSThread(&ids[n], "thief", (OSThreadProc*)thief, (void*)(StgWord)n); } for (n=0; n < SCRATCH_SIZE; n++) {