* sysdeps/mach/i386/syscall.S (syscall): Call END.
authorRoland McGrath <roland@gnu.org>
Sun, 29 May 2005 22:12:28 +0000 (22:12 +0000)
committerRoland McGrath <roland@gnu.org>
Sun, 29 May 2005 22:12:28 +0000 (22:12 +0000)
ChangeLog
nptl/ChangeLog
nptl/tst-cancel4.c

index 0e821a8..216e176 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2005-05-24  Thomas Schwinge  <schwinge@nic-nac-project.de>
+
+       * sysdeps/mach/i386/syscall.S (syscall): Call END.
+
 2005-05-28  Richard Henderson  <rth@redhat.com>
 
        * elf/elf.h (DT_ALPHA_PLTRO, DT_ALPHA_NUM): New.
index b5ec0e4..497b33d 100644 (file)
@@ -1,3 +1,10 @@
+2005-05-29  Richard Henderson  <rth@redhat.com>
+
+       * tst-cancel4.c (WRITE_BUFFER_SIZE): New.
+       (tf_write, tf_writev): Use it.
+       (do_test): Use socketpair instead of pipe.  Set SO_SNDBUF to
+       the system minimum.
+
 2005-05-23  Jakub Jelinek  <jakub@redhat.com>
 
        * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
index c3e527f..cb76196 100644 (file)
@@ -84,6 +84,8 @@ static pthread_barrier_t b2;
 # define IPC_ADDVAL 0
 #endif
 
+#define WRITE_BUFFER_SIZE 4096
+
 /* Cleanup handling test.  */
 static int cl_called;
 
@@ -220,7 +222,7 @@ tf_write  (void *arg)
   ssize_t s;
   pthread_cleanup_push (cl, NULL);
 
-  char buf[100000];
+  char buf[WRITE_BUFFER_SIZE];
   memset (buf, '\0', sizeof (buf));
   s = write (fd, buf, sizeof (buf));
 
@@ -266,7 +268,7 @@ tf_writev  (void *arg)
   ssize_t s;
   pthread_cleanup_push (cl, NULL);
 
-  char buf[100000];
+  char buf[WRITE_BUFFER_SIZE];
   memset (buf, '\0', sizeof (buf));
   struct iovec iov[1] = { [0] = { .iov_base = buf, .iov_len = sizeof (buf) } };
   s = writev (fd, iov, 1);
@@ -2043,11 +2045,29 @@ static struct
 static int
 do_test (void)
 {
-  if (pipe (fds) != 0)
+  int val;
+  socklen_t len;
+
+  if (socketpair (AF_UNIX, SOCK_STREAM, PF_UNIX, fds) != 0)
+    {
+      perror ("socketpair");
+      exit (1);
+    }
+
+  val = 1;
+  len = sizeof(val);
+  setsockopt (fds[1], SOL_SOCKET, SO_SNDBUF, &val, sizeof(val));
+  if (getsockopt (fds[1], SOL_SOCKET, SO_SNDBUF, &val, &len) < 0)
+    {
+      perror ("getsockopt");
+      exit (1);
+    }
+  if (val >= WRITE_BUFFER_SIZE)
     {
-      puts ("pipe failed");
+      puts ("minimum write buffer size too large");
       exit (1);
     }
+  setsockopt (fds[1], SOL_SOCKET, SO_SNDBUF, &val, sizeof(val));
 
   int result = 0;
   size_t cnt;