[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r5698 - in glibc-package/trunk/debian: . patches patches/hurd-i386



Author: sthibault
Date: 2013-09-21 23:42:42 +0000 (Sat, 21 Sep 2013)
New Revision: 5698

Added:
   glibc-package/trunk/debian/patches/hurd-i386/tg-pipe2.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
  * patches/hurd-i386/tg-pipe2.diff: New patch to add pipe2 support.


Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2013-09-21 23:40:55 UTC (rev 5697)
+++ glibc-package/trunk/debian/changelog	2013-09-21 23:42:42 UTC (rev 5698)
@@ -21,6 +21,7 @@
     pthread_atfork support.
   * patches/hurd-i386/tg-thread-cancel.diff: Update patch against two other
     overzealous assertions.
+  * patches/hurd-i386/tg-pipe2.diff: New patch to add pipe2 support.
 
  -- Adam Conrad <adconrad@0c3.net>  Thu, 01 Aug 2013 23:00:51 +0100
 

Added: glibc-package/trunk/debian/patches/hurd-i386/tg-pipe2.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/tg-pipe2.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/tg-pipe2.diff	2013-09-21 23:42:42 UTC (rev 5698)
@@ -0,0 +1,134 @@
+From: Thomas Schwinge <thomas@schwinge.name>
+Subject: [PATCH] pipe2
+
+2008-12-17  Thomas Schwinge  <tschwinge@gnu.org>
+
+	pipe2 for GNU Hurd.
+	* sysdeps/mach/hurd/pipe2.c: New file, copy from pipe.c.  Evolve it to
+	implement __pipe2.
+	* sysdeps/mach/hurd/pipe.c (__pipe): Reimplement using __pipe2.
+	* sysdeps/mach/hurd/kernel-features.h (__ASSUME_PIPE2): Define.
+
+---
+ sysdeps/mach/hurd/kernel-features.h |  1 +
+ sysdeps/mach/hurd/pipe.c            | 21 +------------
+ sysdeps/mach/hurd/pipe2.c           | 61 +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 63 insertions(+), 20 deletions(-)
+
+diff --git a/sysdeps/mach/hurd/kernel-features.h b/sysdeps/mach/hurd/kernel-features.h
+index 2b10327..d603be8 100644
+--- a/sysdeps/mach/hurd/kernel-features.h
++++ b/sysdeps/mach/hurd/kernel-features.h
+@@ -24,3 +24,4 @@
+ #define __ASSUME_DUP3		1
+ #define __ASSUME_ACCEPT4	1
+ #define __ASSUME_SOCK_CLOEXEC	1
++#define __ASSUME_PIPE2		1
+diff --git a/sysdeps/mach/hurd/pipe.c b/sysdeps/mach/hurd/pipe.c
+index 5f91648..24a74ca 100644
+--- a/sysdeps/mach/hurd/pipe.c
++++ b/sysdeps/mach/hurd/pipe.c
+@@ -15,9 +15,6 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
+-#include <errno.h>
+-#include <sys/socket.h>
+-#include <sys/stat.h>
+ #include <unistd.h>
+ 
+ /* Create a one-way communication channel (pipe).
+@@ -28,23 +25,7 @@
+ int
+ __pipe (int fds[2])
+ {
+-  int save_errno = errno;
+-  int result;
+-
+-  /* The magic S_IFIFO protocol tells the pflocal server to create
+-     sockets which report themselves as FIFOs, as POSIX requires for
+-     pipes.  */
+-  result = __socketpair (PF_LOCAL, SOCK_STREAM, S_IFIFO, fds);
+-  if (result == -1 && errno == EPROTONOSUPPORT)
+-    {
+-      /* We contacted an "old" pflocal server that doesn't support the
+-         magic S_IFIFO protocol.
+-	 FIXME: Remove this junk somewhere in the future.  */
+-      __set_errno (save_errno);
+-      return __socketpair (PF_LOCAL, SOCK_STREAM, 0, fds);
+-    }
+-
+-  return result;
++  return __pipe2 (fds, 0);
+ }
+ libc_hidden_def (__pipe)
+ weak_alias (__pipe, pipe)
+diff --git a/sysdeps/mach/hurd/pipe2.c b/sysdeps/mach/hurd/pipe2.c
+new file mode 100644
+index 0000000..c2e5f03
+--- /dev/null
++++ b/sysdeps/mach/hurd/pipe2.c
+@@ -0,0 +1,61 @@
++/* Copyright (C) 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2002, 2008 Free
++   Software Foundation, Inc.
++
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, write to the Free
++   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++   02111-1307 USA.  */
++
++#include <errno.h>
++#include <sys/socket.h>
++#include <sys/stat.h>
++#include <unistd.h>
++#include <fcntl.h>
++#include <fcntl-internal.h>
++#include <hurd.h>
++
++/* Create a one-way communication channel (pipe).
++   Actually the channel is two-way on the Hurd.
++   If successful, two file descriptors are stored in FDS;
++   bytes written on FDS[1] can be read from FDS[0].
++   Apply FLAGS to the new file descriptors.
++   Returns 0 if successful, -1 if not.  */
++int
++__pipe2 (int fds[2], int flags)
++{
++  int save_errno = errno;
++  int result;
++
++  if (flags & ~(O_CLOEXEC | O_NONBLOCK))
++    return __hurd_fail (EINVAL);
++
++  flags = o_to_sock_flags (flags);
++
++  /* The magic S_IFIFO protocol tells the pflocal server to create
++     sockets which report themselves as FIFOs, as POSIX requires for
++     pipes.  */
++  result = __socketpair (PF_LOCAL, SOCK_STREAM | flags, S_IFIFO, fds);
++  if (result == -1 && errno == EPROTONOSUPPORT)
++    {
++      /* We contacted an "old" pflocal server that doesn't support the
++         magic S_IFIFO protocol.
++	 FIXME: Remove this junk somewhere in the future.  */
++      __set_errno (save_errno);
++      return __socketpair (PF_LOCAL, SOCK_STREAM | flags, 0, fds);
++    }
++
++  return result;
++}
++weak_alias (__pipe2, pipe2)
+-- 
+tg: (6965864..) t/pipe2 (depends on: t/socketpair_flags)

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2013-09-21 23:40:55 UTC (rev 5697)
+++ glibc-package/trunk/debian/patches/series	2013-09-21 23:42:42 UTC (rev 5698)
@@ -132,6 +132,7 @@
 hurd-i386/tg-socketpair_flags.diff
 hurd-i386/tg-pthread-atfork.diff
 hurd-i386/cvs-pthread_atfork.diff
+hurd-i386/tg-pipe2.diff
 
 i386/local-biarch.diff
 i386/local-cmov.diff


Reply to: