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

r5488 - in glibc-package/branches/eglibc-2.17/debian: . patches patches/hurd-i386



Author: sthibault
Date: 2013-02-10 23:17:07 +0000 (Sun, 10 Feb 2013)
New Revision: 5488

Added:
   glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-select-EINTR.diff
   glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-setitimer.diff
   glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-single-select-timeout.diff
Removed:
   glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-select-EINTR.diff
   glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff
   glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-single-hurdselect-timeout.diff
Modified:
   glibc-package/branches/eglibc-2.17/debian/changelog
   glibc-package/branches/eglibc-2.17/debian/patches/series
Log:
rename patches/hurd-i386/unsubmitted-single-hurdselect-timeout.diff into
patches/hurd-i386/tg-single-select-timeout.diff,
patches/hurd-i386/unsubmitted-select-EINTR.diff into
patches/hurd-i386/tg-select-EINTR.diff,
patches/hurd-i386/unsubmitted-setitimer_fix.diff into
patches/hurd-i386/tg-setitimer.diff.


Modified: glibc-package/branches/eglibc-2.17/debian/changelog
===================================================================
--- glibc-package/branches/eglibc-2.17/debian/changelog	2013-02-07 07:48:38 UTC (rev 5487)
+++ glibc-package/branches/eglibc-2.17/debian/changelog	2013-02-10 23:17:07 UTC (rev 5488)
@@ -1,6 +1,12 @@
 eglibc (2.17-0experimental3) UNRELEASED; urgency=low
 
-  * 
+  [ Samuel Thibault ]
+  * rename patches/hurd-i386/unsubmitted-single-hurdselect-timeout.diff into
+    patches/hurd-i386/tg-single-select-timeout.diff,
+    patches/hurd-i386/unsubmitted-select-EINTR.diff into
+    patches/hurd-i386/tg-select-EINTR.diff,
+    patches/hurd-i386/unsubmitted-setitimer_fix.diff into
+    patches/hurd-i386/tg-setitimer.diff.
 
  -- Adam Conrad <adconrad@0c3.net>  Thu, 07 Feb 2013 00:44:54 -0700
 

Copied: glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-select-EINTR.diff (from rev 5487, glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-select-EINTR.diff)
===================================================================
--- glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-select-EINTR.diff	                        (rev 0)
+++ glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-select-EINTR.diff	2013-02-10 23:17:07 UTC (rev 5488)
@@ -0,0 +1,30 @@
+We need to set MACH_RCV_INTERRUPT to avoid __mach_msg looping on signals, and
+then handle the interruption.
+
+---
+ hurdselect.c |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/hurd/hurdselect.c b/hurd/hurdselect.c
+index 21ba5f4..8fb2931 100644
+--- a/hurd/hurdselect.c
++++ b/hurd/hurdselect.c
+@@ -335,7 +335,7 @@ _hurd_select (int nfds,
+       mach_msg_option_t options = (timeout == NULL ? 0 : MACH_RCV_TIMEOUT);
+       error_t msgerr;
+       while ((msgerr = __mach_msg (&msg.head,
+-				   MACH_RCV_MSG | options,
++				   MACH_RCV_MSG | MACH_RCV_INTERRUPT | options,
+ 				   0, sizeof msg, portset, to,
+ 				   MACH_PORT_NULL)) == MACH_MSG_SUCCESS)
+ 	{
+@@ -407,6 +407,9 @@ _hurd_select (int nfds,
+ 	   effect a poll, so ERR is MACH_RCV_TIMED_OUT when the poll finds no
+ 	   message waiting.  */
+ 	err = 0;
++      if (msgerr == MACH_RCV_INTERRUPTED)
++	/* Interruption on our side (e.g. signal reception).  */
++	err = EINTR;
+ 
+       if (got)
+ 	/* At least one descriptor is known to be ready now, so we will

Copied: glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-setitimer.diff (from rev 5487, glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff)
===================================================================
--- glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-setitimer.diff	                        (rev 0)
+++ glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-setitimer.diff	2013-02-10 23:17:07 UTC (rev 5488)
@@ -0,0 +1,85 @@
+Author: Richard Braun <rbraun@sceen.net>
+Date:   Wed Dec 26 16:31:14 2012 +0000
+
+    Fix Hurd implementation of setitimer.
+    
+    The preemptor sigcode doesn't match since the POSIX sigcode SI_TIMER is
+    used when SIGALRM is sent. In addition, The inline version of
+    hurd_preempt_signals doesn't update _hurdsig_preempted_set. For these
+    reasons, the preemptor would be skipped by post_signal.
+    
+    * sysdeps/mach/hurd/setitimer.c (setitimer_locked): Fix preemptor setup.
+
+diff --git a/sysdeps/mach/hurd/setitimer.c b/sysdeps/mach/hurd/setitimer.c
+index 00cd0cc..39b30de 100644
+--- a/sysdeps/mach/hurd/setitimer.c
++++ b/sysdeps/mach/hurd/setitimer.c
+@@ -128,7 +128,8 @@ timer_thread (void)
+ 
+ /* Forward declaration.  */
+ static int setitimer_locked (const struct itimerval *new,
+-			     struct itimerval *old, void *crit);
++			     struct itimerval *old, void *crit,
++			     int hurd_siglocked);
+ 
+ static sighandler_t
+ restart_itimer (struct hurd_signal_preemptor *preemptor,
+@@ -142,7 +143,7 @@ restart_itimer (struct hurd_signal_preemptor *preemptor,
+   /* Either reload or disable the itimer.  */
+   __spin_lock (&_hurd_itimer_lock);
+   it.it_value = it.it_interval = _hurd_itimerval.it_interval;
+-  setitimer_locked (&it, NULL, NULL);
++  setitimer_locked (&it, NULL, NULL, 1);
+ 
+   /* Continue with normal delivery (or hold, etc.) of SIGALRM.  */
+   return SIG_ERR;
+@@ -154,7 +155,7 @@ restart_itimer (struct hurd_signal_preemptor *preemptor,
+ 
+ static int
+ setitimer_locked (const struct itimerval *new, struct itimerval *old,
+-		  void *crit)
++		  void *crit, int hurd_siglocked)
+ {
+   struct itimerval newval;
+   struct timeval now, remaining, elapsed;
+@@ -192,16 +193,19 @@ setitimer_locked (const struct itimerval *new, struct itimerval *old,
+ 	 run `restart_itimer' each time a SIGALRM would arrive.  */
+       static struct hurd_signal_preemptor preemptor =
+ 	{
+-	  __sigmask (SIGALRM), 0, 0,
++	  __sigmask (SIGALRM), SI_TIMER, SI_TIMER,
+ 	  &restart_itimer,
+ 	};
+-      __mutex_lock (&_hurd_siglock);
++      if (!hurd_siglocked)
++	__mutex_lock (&_hurd_siglock);
+       if (! preemptor.next && _hurdsig_preemptors != &preemptor)
+ 	{
+ 	  preemptor.next = _hurdsig_preemptors;
+ 	  _hurdsig_preemptors = &preemptor;
++	  _hurdsig_preempted_set |= preemptor.signals;
+ 	}
+-      __mutex_unlock (&_hurd_siglock);
++      if (!hurd_siglocked)
++	__mutex_unlock (&_hurd_siglock);
+ 
+       if (_hurd_itimer_port == MACH_PORT_NULL)
+ 	{
+@@ -348,7 +352,7 @@ __setitimer (enum __itimer_which which, const struct itimerval *new,
+ 
+   crit = _hurd_critical_section_lock ();
+   __spin_lock (&_hurd_itimer_lock);
+-  return setitimer_locked (new, old, crit);
++  return setitimer_locked (new, old, crit, 0);
+ }
+ 
+ static void
+@@ -363,7 +367,7 @@ fork_itimer (void)
+   it = _hurd_itimerval;
+   it.it_value = it.it_interval;
+ 
+-  setitimer_locked (&it, NULL, NULL);
++  setitimer_locked (&it, NULL, NULL, 0);
+ 
+   (void) &fork_itimer;		/* Avoid gcc optimizing out the function.  */
+ }

Copied: glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-single-select-timeout.diff (from rev 5487, glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-single-hurdselect-timeout.diff)
===================================================================
--- glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-single-select-timeout.diff	                        (rev 0)
+++ glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/tg-single-select-timeout.diff	2013-02-10 23:17:07 UTC (rev 5488)
@@ -0,0 +1,35 @@
+commit fffcbbb0b5ff8864086f7b58fdbb8aa4c71943d0
+Author: Richard Braun <rbraun@sceen.net>
+Date:   Mon Dec 17 09:57:41 2012 +0000
+
+    Fix _hurd_select for single fd sets
+    
+    The function attempts to optimize this case by performing one IPC system call
+    with the timeout included among the parameters, but in the absence of a reply,
+    it will call mach_msg again with the same timeout later, effectively doubling
+    the total timeout of the select/poll call.
+    
+    Remove this optimization for the time being.
+    
+    * hurd/hurdselect.c (_hurd_select): Always call __io_select with no timeout.
+
+---
+ hurdselect.c |    5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/hurd/hurdselect.c b/hurd/hurdselect.c
+index 21ba5f4..a02c7be 100644
+--- a/hurd/hurdselect.c
++++ b/hurd/hurdselect.c
+@@ -236,10 +236,7 @@ _hurd_select (int nfds,
+ 	  {
+ 	    int type = d[i].type;
+ 	    d[i].reply_port = __mach_reply_port ();
+-	    err = __io_select (d[i].io_port, d[i].reply_port,
+-			       /* Poll only if there's a single descriptor.  */
+-			       (firstfd == lastfd) ? to : 0,
+-			       &type);
++	    err = __io_select (d[i].io_port, d[i].reply_port, 0, &type);
+ 	    switch (err)
+ 	      {
+ 	      case MACH_RCV_TIMED_OUT:

Deleted: glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-select-EINTR.diff
===================================================================
--- glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-select-EINTR.diff	2013-02-07 07:48:38 UTC (rev 5487)
+++ glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-select-EINTR.diff	2013-02-10 23:17:07 UTC (rev 5488)
@@ -1,30 +0,0 @@
-We need to set MACH_RCV_INTERRUPT to avoid __mach_msg looping on signals, and
-then handle the interruption.
-
----
- hurdselect.c |    7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/hurd/hurdselect.c b/hurd/hurdselect.c
-index 21ba5f4..8fb2931 100644
---- a/hurd/hurdselect.c
-+++ b/hurd/hurdselect.c
-@@ -335,7 +335,7 @@ _hurd_select (int nfds,
-       mach_msg_option_t options = (timeout == NULL ? 0 : MACH_RCV_TIMEOUT);
-       error_t msgerr;
-       while ((msgerr = __mach_msg (&msg.head,
--				   MACH_RCV_MSG | options,
-+				   MACH_RCV_MSG | MACH_RCV_INTERRUPT | options,
- 				   0, sizeof msg, portset, to,
- 				   MACH_PORT_NULL)) == MACH_MSG_SUCCESS)
- 	{
-@@ -407,6 +407,9 @@ _hurd_select (int nfds,
- 	   effect a poll, so ERR is MACH_RCV_TIMED_OUT when the poll finds no
- 	   message waiting.  */
- 	err = 0;
-+      if (msgerr == MACH_RCV_INTERRUPTED)
-+	/* Interruption on our side (e.g. signal reception).  */
-+	err = EINTR;
- 
-       if (got)
- 	/* At least one descriptor is known to be ready now, so we will

Deleted: glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff
===================================================================
--- glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff	2013-02-07 07:48:38 UTC (rev 5487)
+++ glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff	2013-02-10 23:17:07 UTC (rev 5488)
@@ -1,85 +0,0 @@
-Author: Richard Braun <rbraun@sceen.net>
-Date:   Wed Dec 26 16:31:14 2012 +0000
-
-    Fix Hurd implementation of setitimer.
-    
-    The preemptor sigcode doesn't match since the POSIX sigcode SI_TIMER is
-    used when SIGALRM is sent. In addition, The inline version of
-    hurd_preempt_signals doesn't update _hurdsig_preempted_set. For these
-    reasons, the preemptor would be skipped by post_signal.
-    
-    * sysdeps/mach/hurd/setitimer.c (setitimer_locked): Fix preemptor setup.
-
-diff --git a/sysdeps/mach/hurd/setitimer.c b/sysdeps/mach/hurd/setitimer.c
-index 00cd0cc..39b30de 100644
---- a/sysdeps/mach/hurd/setitimer.c
-+++ b/sysdeps/mach/hurd/setitimer.c
-@@ -128,7 +128,8 @@ timer_thread (void)
- 
- /* Forward declaration.  */
- static int setitimer_locked (const struct itimerval *new,
--			     struct itimerval *old, void *crit);
-+			     struct itimerval *old, void *crit,
-+			     int hurd_siglocked);
- 
- static sighandler_t
- restart_itimer (struct hurd_signal_preemptor *preemptor,
-@@ -142,7 +143,7 @@ restart_itimer (struct hurd_signal_preemptor *preemptor,
-   /* Either reload or disable the itimer.  */
-   __spin_lock (&_hurd_itimer_lock);
-   it.it_value = it.it_interval = _hurd_itimerval.it_interval;
--  setitimer_locked (&it, NULL, NULL);
-+  setitimer_locked (&it, NULL, NULL, 1);
- 
-   /* Continue with normal delivery (or hold, etc.) of SIGALRM.  */
-   return SIG_ERR;
-@@ -154,7 +155,7 @@ restart_itimer (struct hurd_signal_preemptor *preemptor,
- 
- static int
- setitimer_locked (const struct itimerval *new, struct itimerval *old,
--		  void *crit)
-+		  void *crit, int hurd_siglocked)
- {
-   struct itimerval newval;
-   struct timeval now, remaining, elapsed;
-@@ -192,16 +193,19 @@ setitimer_locked (const struct itimerval *new, struct itimerval *old,
- 	 run `restart_itimer' each time a SIGALRM would arrive.  */
-       static struct hurd_signal_preemptor preemptor =
- 	{
--	  __sigmask (SIGALRM), 0, 0,
-+	  __sigmask (SIGALRM), SI_TIMER, SI_TIMER,
- 	  &restart_itimer,
- 	};
--      __mutex_lock (&_hurd_siglock);
-+      if (!hurd_siglocked)
-+	__mutex_lock (&_hurd_siglock);
-       if (! preemptor.next && _hurdsig_preemptors != &preemptor)
- 	{
- 	  preemptor.next = _hurdsig_preemptors;
- 	  _hurdsig_preemptors = &preemptor;
-+	  _hurdsig_preempted_set |= preemptor.signals;
- 	}
--      __mutex_unlock (&_hurd_siglock);
-+      if (!hurd_siglocked)
-+	__mutex_unlock (&_hurd_siglock);
- 
-       if (_hurd_itimer_port == MACH_PORT_NULL)
- 	{
-@@ -348,7 +352,7 @@ __setitimer (enum __itimer_which which, const struct itimerval *new,
- 
-   crit = _hurd_critical_section_lock ();
-   __spin_lock (&_hurd_itimer_lock);
--  return setitimer_locked (new, old, crit);
-+  return setitimer_locked (new, old, crit, 0);
- }
- 
- static void
-@@ -363,7 +367,7 @@ fork_itimer (void)
-   it = _hurd_itimerval;
-   it.it_value = it.it_interval;
- 
--  setitimer_locked (&it, NULL, NULL);
-+  setitimer_locked (&it, NULL, NULL, 0);
- 
-   (void) &fork_itimer;		/* Avoid gcc optimizing out the function.  */
- }

Deleted: glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-single-hurdselect-timeout.diff
===================================================================
--- glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-single-hurdselect-timeout.diff	2013-02-07 07:48:38 UTC (rev 5487)
+++ glibc-package/branches/eglibc-2.17/debian/patches/hurd-i386/unsubmitted-single-hurdselect-timeout.diff	2013-02-10 23:17:07 UTC (rev 5488)
@@ -1,35 +0,0 @@
-commit fffcbbb0b5ff8864086f7b58fdbb8aa4c71943d0
-Author: Richard Braun <rbraun@sceen.net>
-Date:   Mon Dec 17 09:57:41 2012 +0000
-
-    Fix _hurd_select for single fd sets
-    
-    The function attempts to optimize this case by performing one IPC system call
-    with the timeout included among the parameters, but in the absence of a reply,
-    it will call mach_msg again with the same timeout later, effectively doubling
-    the total timeout of the select/poll call.
-    
-    Remove this optimization for the time being.
-    
-    * hurd/hurdselect.c (_hurd_select): Always call __io_select with no timeout.
-
----
- hurdselect.c |    5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/hurd/hurdselect.c b/hurd/hurdselect.c
-index 21ba5f4..a02c7be 100644
---- a/hurd/hurdselect.c
-+++ b/hurd/hurdselect.c
-@@ -236,10 +236,7 @@ _hurd_select (int nfds,
- 	  {
- 	    int type = d[i].type;
- 	    d[i].reply_port = __mach_reply_port ();
--	    err = __io_select (d[i].io_port, d[i].reply_port,
--			       /* Poll only if there's a single descriptor.  */
--			       (firstfd == lastfd) ? to : 0,
--			       &type);
-+	    err = __io_select (d[i].io_port, d[i].reply_port, 0, &type);
- 	    switch (err)
- 	      {
- 	      case MACH_RCV_TIMED_OUT:

Modified: glibc-package/branches/eglibc-2.17/debian/patches/series
===================================================================
--- glibc-package/branches/eglibc-2.17/debian/patches/series	2013-02-07 07:48:38 UTC (rev 5487)
+++ glibc-package/branches/eglibc-2.17/debian/patches/series	2013-02-10 23:17:07 UTC (rev 5488)
@@ -108,9 +108,9 @@
 hurd-i386/tg-hurdsig-boot-fix.diff
 hurd-i386/submitted-libpthread-elf.diff
 hurd-i386/local-ulimit.diff
-hurd-i386/unsubmitted-single-hurdselect-timeout.diff
-hurd-i386/unsubmitted-setitimer_fix.diff
-hurd-i386/unsubmitted-select-EINTR.diff
+hurd-i386/tg-single-select-timeout.diff
+hurd-i386/tg-setitimer.diff
+hurd-i386/tg-select-EINTR.diff
 hurd-i386/cvs-libpthread_lock.diff
 
 i386/local-biarch.diff


Reply to: