summaryrefslogtreecommitdiff
path: root/nptl/tst-flock2.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2003-03-23 10:01:48 +0000
committerRoland McGrath <roland@gnu.org>2003-03-23 10:01:48 +0000
commitb910f7887bdc3c07e460c8ee25ba552c6a2249a5 (patch)
tree06271b5c9ed70bf9c3dd2a08c551a2a54c1ed302 /nptl/tst-flock2.c
parent24eaaef61dffee283b6d32328f3e5126063d9d2a (diff)
* tst-join5.c (tf1, tf2): Add a cast.
* Makeconfig (includes): Append -I$(..)nptl to this variable. * tst-barrier2.c (do_test) [! _POSIX_THREAD_PROCESS_SHARED]: Don't test anything. * tst-cond4.c: Likewise. * tst-cond6.c: Likewise. * tst-flock2.c: Likewise. * tst-mutex4.c: Likewise. * tst-rwlock4.c: Likewise. * tst-signal1.c: Likewise. * tst-spin2.c: Likewise. * tst-cond11.c [! _POSIX_CLOCK_SELECTION]: Likewise. * tst-mutex4.c: Use test-skeleton.c. * tst-spin2.c: Likewise. * tst-sysconf.c: Likewise. * tst-barrier2.c: Likewise. * tst-cond4.c: Likewise. * tst-cond6.c: Likewise. * tst-rwlock4.c: Likewise. * tst-unload.c: Likewise. * tst-flock2.c (do_test): Use return instead of exit.
Diffstat (limited to 'nptl/tst-flock2.c')
-rw-r--r--nptl/tst-flock2.c50
1 files changed, 29 insertions, 21 deletions
diff --git a/nptl/tst-flock2.c b/nptl/tst-flock2.c
index 52d02dc9bb..fdbffbb272 100644
--- a/nptl/tst-flock2.c
+++ b/nptl/tst-flock2.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -59,13 +59,20 @@ tf (void *arg)
static int
do_test (void)
{
+#if ! _POSIX_THREAD_PROCESS_SHARED
+
+ puts ("_POSIX_THREAD_PROCESS_SHARED not supported, test skipped");
+ return 0;
+
+#else
+
char tmp[] = "/tmp/tst-flock2-XXXXXX";
fd = mkstemp (tmp);
if (fd == -1)
{
puts ("mkstemp failed");
- exit (1);
+ return 1;
}
unlink (tmp);
@@ -80,32 +87,32 @@ do_test (void)
if (b == MAP_FAILED)
{
puts ("mmap failed");
- exit (1);
+ return 1;
}
pthread_barrierattr_t ba;
if (pthread_barrierattr_init (&ba) != 0)
{
puts ("barrierattr_init failed");
- exit (1);
+ return 1;
}
if (pthread_barrierattr_setpshared (&ba, PTHREAD_PROCESS_SHARED) != 0)
{
puts ("barrierattr_setpshared failed");
- exit (1);
+ return 1;
}
if (pthread_barrier_init (b, &ba, 2) != 0)
{
puts ("barrier_init failed");
- exit (1);
+ return 1;
}
if (pthread_barrierattr_destroy (&ba) != 0)
{
puts ("barrierattr_destroy failed");
- exit (1);
+ return 1;
}
struct flock fl =
@@ -118,14 +125,14 @@ do_test (void)
if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLKW, &fl)) != 0)
{
puts ("first fcntl failed");
- exit (1);
+ return 1;
}
pid_t pid = fork ();
if (pid == -1)
{
puts ("fork failed");
- exit (1);
+ return 1;
}
if (pid == 0)
@@ -137,7 +144,7 @@ do_test (void)
if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLK, &fl)) == 0)
{
puts ("child: second flock succeeded");
- exit (1);
+ return 1;
}
}
@@ -149,7 +156,7 @@ do_test (void)
if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLKW, &fl)) != 0)
{
puts ("third fcntl failed");
- exit (1);
+ return 1;
}
}
@@ -161,25 +168,25 @@ do_test (void)
if (pthread_mutex_lock (&lock) != 0)
{
puts ("1st locking of lock failed");
- exit (1);
+ return 1;
}
if (pthread_mutex_lock (&lock2) != 0)
{
puts ("1st locking of lock2 failed");
- exit (1);
+ return 1;
}
if (pthread_create (&th, NULL, tf, NULL) != 0)
{
puts ("pthread_create failed");
- exit (1);
+ return 1;
}
if (pthread_mutex_lock (&lock) != 0)
{
puts ("2nd locking of lock failed");
- exit (1);
+ return 1;
}
puts ("child locked file");
@@ -193,7 +200,7 @@ do_test (void)
if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLK, &fl)) == 0)
{
puts ("fifth fcntl succeeded");
- exit (1);
+ return 1;
}
puts ("file locked by child");
@@ -206,13 +213,13 @@ do_test (void)
if (pthread_mutex_unlock (&lock2) != 0)
{
puts ("unlock of lock2 failed");
- exit (1);
+ return 1;
}
if (pthread_join (th, NULL) != 0)
{
puts ("join failed");
- exit (1);
+ return 1;
}
puts ("child's thread terminated");
@@ -226,7 +233,7 @@ do_test (void)
if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLK, &fl)) == 0)
{
puts ("fifth fcntl succeeded");
- exit (1);
+ return 1;
}
puts ("file still locked");
@@ -243,17 +250,18 @@ do_test (void)
if (TEMP_FAILURE_RETRY (waitpid (pid, &status, 0)) != pid)
{
puts ("waitpid failed");
- exit (1);
+ return 1;
}
puts ("child terminated");
if (TEMP_FAILURE_RETRY (fcntl (fd, F_SETLKW, &fl)) != 0)
{
puts ("sixth fcntl failed");
- exit (1);
+ return 1;
}
return status;
+#endif
}
#define TEST_FUNCTION do_test ()