diff options
author | Mike Crowe <mac@mcrowe.com> | 2019-05-09 14:17:23 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2019-05-09 14:33:53 -0300 |
commit | 44ac6ee97a111ab3680a9e95f013cbd8d0b02e48 (patch) | |
tree | 15e5e98edd5058af6705bd4619d3091554c53813 | |
parent | 495514eec7d2b9ebb9beaa313211aca212de86da (diff) | |
download | glibc-44ac6ee97a111ab3680a9e95f013cbd8d0b02e48.zip glibc-44ac6ee97a111ab3680a9e95f013cbd8d0b02e48.tar.gz glibc-44ac6ee97a111ab3680a9e95f013cbd8d0b02e48.tar.bz2 |
nptl/tst-abstime: Use libsupport
Checked on x86_64-linux-gnu and i686-linux-gnu.
* nptl/tst-abstime.c: Use libsupport.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | nptl/tst-abstime.c | 70 |
2 files changed, 20 insertions, 52 deletions
@@ -1,5 +1,7 @@ 2019-05-09 Mike Crowe <mac@mcrowe.com> + * nptl/tst-abstime.c: Use libsupport. + * nptl/tst-rwlock6.c: Use libsupport. This also happens to fix a small bug where only tv.tv_usec was checked which could cause an erroneous pass if pthread_rwlock_timedrdlock incorrectly took more diff --git a/nptl/tst-abstime.c b/nptl/tst-abstime.c index 71610f8..56fb8a5 100644 --- a/nptl/tst-abstime.c +++ b/nptl/tst-abstime.c @@ -20,6 +20,8 @@ #include <pthread.h> #include <semaphore.h> #include <stdio.h> +#include <support/check.h> +#include <support/xthread.h> static pthread_cond_t c = PTHREAD_COND_INITIALIZER; static pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER; @@ -31,67 +33,31 @@ static sem_t sem; static void * th (void *arg) { - long int res = 0; - int r; struct timespec t = { -2, 0 }; - r = pthread_mutex_timedlock (&m1, &t); - if (r != ETIMEDOUT) - { - puts ("pthread_mutex_timedlock did not return ETIMEDOUT"); - res = 1; - } - r = pthread_rwlock_timedrdlock (&rw1, &t); - if (r != ETIMEDOUT) - { - puts ("pthread_rwlock_timedrdlock did not return ETIMEDOUT"); - res = 1; - } - r = pthread_rwlock_timedwrlock (&rw2, &t); - if (r != ETIMEDOUT) - { - puts ("pthread_rwlock_timedwrlock did not return ETIMEDOUT"); - res = 1; - } - return (void *) res; + TEST_COMPARE (pthread_mutex_timedlock (&m1, &t), ETIMEDOUT); + TEST_COMPARE (pthread_rwlock_timedrdlock (&rw1, &t), ETIMEDOUT); + TEST_COMPARE (pthread_rwlock_timedwrlock (&rw2, &t), ETIMEDOUT); + return NULL; } static int do_test (void) { - int res = 0; - int r; struct timespec t = { -2, 0 }; - pthread_t pth; sem_init (&sem, 0, 0); - r = sem_timedwait (&sem, &t); - if (r != -1 || errno != ETIMEDOUT) - { - puts ("sem_timedwait did not fail with ETIMEDOUT"); - res = 1; - } - - pthread_mutex_lock (&m1); - pthread_rwlock_wrlock (&rw1); - pthread_rwlock_rdlock (&rw2); - pthread_mutex_lock (&m2); - if (pthread_create (&pth, 0, th, 0) != 0) - { - puts ("cannot create thread"); - return 1; - } - r = pthread_cond_timedwait (&c, &m2, &t); - if (r != ETIMEDOUT) - { - puts ("pthread_cond_timedwait did not return ETIMEDOUT"); - res = 1; - } - void *thres; - pthread_join (pth, &thres); - return res | (thres != NULL); + TEST_COMPARE (sem_timedwait (&sem, &t), -1); + TEST_COMPARE (errno, ETIMEDOUT); + + xpthread_mutex_lock (&m1); + xpthread_rwlock_wrlock (&rw1); + xpthread_rwlock_rdlock (&rw2); + xpthread_mutex_lock (&m2); + pthread_t pth = xpthread_create (0, th, 0); + TEST_COMPARE (pthread_cond_timedwait (&c, &m2, &t), ETIMEDOUT); + xpthread_join (pth); + return 0; } - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" +#include <support/test-driver.c> |