+2016-07-05 Adhemerval Zanella <adhemerval.zanella@linaro.org>
+
+ * nptl/tst-cancel4-common.c (do_test): Add temporary fifo creation.
+ * nptl/tst-cancel4-common.h (fifoname): New variable.
+ (fifofd): Likewise.
+ (cl_fifo): New function.
+ * nptl/tst-cancel4.c (tf_sigpause): Replace SIGCANCEL usage by
+ SIGINT.
+ (tf_open): Add early cancel test.
+
2016-07-04 Andreas Schwab <schwab@linux-m68k.org>
* sysdeps/m68k/Makefile (CFLAGS-mcount.c): Define.
}
setsockopt (fds[1], SOL_SOCKET, SO_SNDBUF, &val, sizeof(val));
+ if (mktemp (fifoname) == NULL)
+ {
+ printf ("%s: cannot generate temp file name: %m\n", __func__);
+ exit (1);
+ }
+
int result = 0;
size_t cnt;
for (cnt = 0; cnt < ntest_tf; ++cnt)
int r = pthread_barrier_wait (&b2);
if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
{
- printf ("%s: barrier_wait failed\n", __FUNCTION__);
+ printf ("%s: barrier_wait failed\n", __func__);
result = 1;
continue;
}
int r = pthread_barrier_wait (&b2);
if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
{
- printf ("%s: barrier_wait failed\n", __FUNCTION__);
+ printf ("%s: barrier_wait failed\n", __func__);
result = 1;
continue;
}
r = pthread_barrier_wait (&b2);
if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
{
- printf ("%s: barrier_wait failed\n", __FUNCTION__);
+ printf ("%s: barrier_wait failed\n", __func__);
result = 1;
continue;
}
#include <sys/poll.h>
#include <sys/wait.h>
-#include "pthreadP.h"
-
/* Since STREAMS are not supported in the standard Linux kernel and
there we don't advertise STREAMS as supported is no need to test
#include "tst-cancel4-common.h"
+
#ifndef IPC_ADDVAL
# define IPC_ADDVAL 0
#endif
pthread_cleanup_push (cl, NULL);
-#ifdef SIGCANCEL
- /* Just for fun block the cancellation signal. We need to use
- __xpg_sigpause since otherwise we will get the BSD version. */
- __xpg_sigpause (SIGCANCEL);
-#else
- pause ();
-#endif
+ sigpause (sigmask (SIGINT));
pthread_cleanup_pop (0);
tf_open (void *arg)
{
if (arg == NULL)
- // XXX If somebody can provide a portable test case in which open()
- // blocks we can enable this test to run in both rounds.
- abort ();
-
- int r = pthread_barrier_wait (&b2);
- if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
{
- printf ("%s: barrier_wait failed\n", __FUNCTION__);
- exit (1);
+ fifofd = mkfifo (fifoname, S_IWUSR | S_IRUSR);
+ if (fifofd == -1)
+ {
+ printf ("%s: mkfifo failed: %m\n", __func__);
+ exit (1);
+ }
+ }
+ else
+ {
+ int r = pthread_barrier_wait (&b2);
+ if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
+ {
+ printf ("%s: barrier_wait failed: %m\n", __func__);
+ exit (1);
+ }
}
- r = pthread_barrier_wait (&b2);
+ int r = pthread_barrier_wait (&b2);
if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD)
{
- printf ("%s: 2nd barrier_wait failed\n", __FUNCTION__);
+ printf ("%s: 2nd barrier_wait failed: %m\n", __func__);
exit (1);
}
- pthread_cleanup_push (cl, NULL);
+ pthread_cleanup_push (cl_fifo, NULL);
- open ("Makefile", O_RDONLY);
+ open (arg ? "Makefile" : fifoname, O_RDONLY);
pthread_cleanup_pop (0);