[1/2] nptl: Convert tst-join3 to use libsupport
Commit Message
* nptl/tst-join3.c: Use libsupport.
---
ChangeLog | 4 ++-
nptl/tst-join3.c | 86 +++++++++++--------------------------------------
2 files changed, 24 insertions(+), 66 deletions(-)
@@ -1,3 +1,7 @@
+2019-06-28 Mike Crowe <mac@mcrowe.com>
+
+ * nptl/tst-join3.c: Use libsupport.
+
2019-06-26 Mike Crowe <mac@mcrowe.com>
* nptl/pthread_cond_wait.c: (__pthread_cond_clockwait): Remove code
@@ -22,6 +22,10 @@
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
+#include <support/check.h>
+#include <support/timespec.h>
+#include <support/xthread.h>
+#include <support/xtime.h>
static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
@@ -30,11 +34,7 @@ static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
static void *
tf (void *arg)
{
- if (pthread_mutex_lock (&lock) != 0)
- {
- puts ("child: mutex_lock failed");
- return NULL;
- }
+ xpthread_mutex_lock (&lock);
return (void *) 42l;
}
@@ -43,80 +43,34 @@ tf (void *arg)
static int
do_test (void)
{
- pthread_t th;
-
- if (pthread_mutex_lock (&lock) != 0)
- {
- puts ("mutex_lock failed");
- exit (1);
- }
-
- if (pthread_create (&th, NULL, tf, NULL) != 0)
- {
- puts ("mutex_create failed");
- exit (1);
- }
+ xpthread_mutex_lock (&lock);
+ pthread_t th = xpthread_create (NULL, tf, NULL);
void *status;
- struct timespec ts;
- struct timeval tv;
- (void) gettimeofday (&tv, NULL);
- TIMEVAL_TO_TIMESPEC (&tv, &ts);
- ts.tv_nsec += 200000000;
- if (ts.tv_nsec >= 1000000000)
- {
- ts.tv_nsec -= 1000000000;
- ++ts.tv_sec;
- }
- int val = pthread_timedjoin_np (th, &status, &ts);
- if (val == 0)
- {
- puts ("1st timedjoin succeeded");
- exit (1);
- }
- else if (val != ETIMEDOUT)
- {
- puts ("1st timedjoin didn't return ETIMEDOUT");
- exit (1);
- }
+ struct timespec timeout = timespec_add (xclock_now (CLOCK_REALTIME),
+ make_timespec (0, 200000000));
- if (pthread_mutex_unlock (&lock) != 0)
- {
- puts ("mutex_unlock failed");
- exit (1);
- }
+ int val = pthread_timedjoin_np (th, &status, &timeout);
+ TEST_COMPARE (val, ETIMEDOUT);
+
+ xpthread_mutex_unlock (&lock);
while (1)
{
- (void) gettimeofday (&tv, NULL);
- TIMEVAL_TO_TIMESPEC (&tv, &ts);
- ts.tv_nsec += 200000000;
- if (ts.tv_nsec >= 1000000000)
- {
- ts.tv_nsec -= 1000000000;
- ++ts.tv_sec;
- }
-
- val = pthread_timedjoin_np (th, &status, &ts);
+ timeout = timespec_add (xclock_now (CLOCK_REALTIME),
+ make_timespec (0, 200000000));
+
+ val = pthread_timedjoin_np (th, &status, &timeout);
if (val == 0)
break;
- if (val != ETIMEDOUT)
- {
- printf ("timedjoin returned %s (%d), expected only 0 or ETIMEDOUT\n",
- strerror (val), val);
- exit (1);
- }
+ TEST_COMPARE (val, ETIMEDOUT);
}
if (status != (void *) 42l)
- {
- printf ("return value %p, expected %p\n", status, (void *) 42l);
- exit (1);
- }
+ FAIL_EXIT1 ("return value %p, expected %p\n", status, (void *) 42l);
return 0;
}
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
+#include <support/test-driver.c>