aboutsummaryrefslogtreecommitdiff
path: root/nptl/tst-join3.c
diff options
context:
space:
mode:
authorMike Crowe <mac@mcrowe.com>2019-10-31 09:08:10 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2019-11-01 11:23:43 -0300
commit22434b2f0360212d6c3ae775f425a0dbc97b2a4d (patch)
treec9aef564e4972ed14cc1a7432719bc16a0ff9ed1 /nptl/tst-join3.c
parentf8042536dcdef2543b9506500ed22564df12dcd1 (diff)
downloadglibc-22434b2f0360212d6c3ae775f425a0dbc97b2a4d.zip
glibc-22434b2f0360212d6c3ae775f425a0dbc97b2a4d.tar.gz
glibc-22434b2f0360212d6c3ae775f425a0dbc97b2a4d.tar.bz2
nptl: Convert tst-join3 to use libsupport
Checked on x86_64-linux-gnu. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'nptl/tst-join3.c')
-rw-r--r--nptl/tst-join3.c86
1 files changed, 20 insertions, 66 deletions
diff --git a/nptl/tst-join3.c b/nptl/tst-join3.c
index d8785c5..a4ae459 100644
--- a/nptl/tst-join3.c
+++ b/nptl/tst-join3.c
@@ -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>