Message ID | 182581dda2e190e9a2410eadec70e418ad838ca5.1554665560.git-series.mac@mcrowe.com |
---|---|
State | New |
Headers | show |
Series | Add new helper functions+macros to libsupport and use them in some nptl tests | expand |
LGTM with a nit below. On 07/04/2019 16:33, Mike Crowe wrote: > * nptl/tst-abstime.c: Use libsupport. > --- > ChangeLog | 4 +++- > nptl/tst-abstime.c | 70 ++++++++++++----------------------------------- > 2 files changed, 22 insertions(+), 52 deletions(-) > > diff --git a/ChangeLog b/ChangeLog > index 929018e..43d7b65 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,5 +1,9 @@ > 2019-04-06 Mike Crowe <mac@mcrowe.com> > > + * nptl/tst-abstime.c: Use libsupport. > + Ok. > +2019-04-06 Mike Crowe <mac@mcrowe.com> > + > * 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..026be7e 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; > } Ok. > > 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); > + Ok. > + 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); > + pthread_join (pth, NULL); xpthread_join maybe? > + return 0; > } > > - > -#define TEST_FUNCTION do_test () > -#include "../test-skeleton.c" > +#include <support/test-driver.c> >
diff --git a/ChangeLog b/ChangeLog index 929018e..43d7b65 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2019-04-06 Mike Crowe <mac@mcrowe.com> + * nptl/tst-abstime.c: Use libsupport. + +2019-04-06 Mike Crowe <mac@mcrowe.com> + * 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..026be7e 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); + pthread_join (pth, NULL); + return 0; } - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" +#include <support/test-driver.c>