diff options
Diffstat (limited to 'pthreads/tests/semaphore1.c')
-rw-r--r-- | pthreads/tests/semaphore1.c | 49 |
1 files changed, 19 insertions, 30 deletions
diff --git a/pthreads/tests/semaphore1.c b/pthreads/tests/semaphore1.c index f89a43081..8fc91ee02 100644 --- a/pthreads/tests/semaphore1.c +++ b/pthreads/tests/semaphore1.c @@ -86,8 +86,11 @@ thr(void * arg) if ( result == -1 ) { int err = errno; - printf("thread: sem_trywait 1: expecting error %s: got %s\n", - error_string[EAGAIN], error_string[err]); fflush(stdout); + if (err != EAGAIN) + { + printf("thread: sem_trywait 1: expecting error %s: got %s\n", + error_string[EAGAIN], error_string[err]); fflush(stdout); + } assert(err == EAGAIN); } else @@ -99,18 +102,9 @@ thr(void * arg) assert((result = sem_trywait(&s)) == 0); - if ( result == -1 ) - { - perror("thread: sem_trywait 2"); - } - else - { - printf("thread: ok 2\n"); - } - assert(sem_post(&s) == 0); - return 0; + return NULL; } @@ -119,21 +113,25 @@ main() { pthread_t t; sem_t s; - int result; + void* result1 = (void*)-1; + int result2; assert(pthread_create(&t, NULL, thr, NULL) == 0); - assert(pthread_join(t, (void **)&result) == 0); - assert(result == 0); + assert(pthread_join(t, &result1) == 0); + assert((int)(size_t)result1 == 0); assert(sem_init(&s, PTHREAD_PROCESS_PRIVATE, 0) == 0); - assert((result = sem_trywait(&s)) == -1); + assert((result2 = sem_trywait(&s)) == -1); - if ( result == -1 ) + if (result2 == -1) { int err = errno; - printf("main: sem_trywait 1: expecting error %s: got %s\n", - error_string[EAGAIN], error_string[err]); fflush(stdout); + if (err != EAGAIN) + { + printf("main: sem_trywait 1: expecting error %s: got %s\n", + error_string[EAGAIN], error_string[err]); fflush(stdout); + } assert(err == EAGAIN); } else @@ -141,18 +139,9 @@ main() printf("main: ok 1\n"); } - assert((result = sem_post(&s)) == 0); + assert((result2 = sem_post(&s)) == 0); - assert((result = sem_trywait(&s)) == 0); - - if ( result == -1 ) - { - perror("main: sem_trywait 2"); - } - else - { - printf("main: ok 2\n"); - } + assert((result2 = sem_trywait(&s)) == 0); assert(sem_post(&s) == 0); |