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

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



Author: sthibault
Date: 2013-01-05 02:32:43 +0000 (Sat, 05 Jan 2013)
New Revision: 5434

Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff
Log:
patches/hurd-i386/unsubmitted-setitimer_fix.diff: Finish fixing setitimer

Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2012-12-31 01:21:22 UTC (rev 5433)
+++ glibc-package/trunk/debian/changelog	2013-01-05 02:32:43 UTC (rev 5434)
@@ -2,6 +2,9 @@
 
   * THIS UPLOAD TARGETS WHEEZY, MOVE NEW DEVELOPMENT TO THE 2.16/2.17 BRANCH
 
+  [ Samuel Thibault ]
+  * patches/hurd-i386/unsubmitted-setitimer_fix.diff: Finish fixing setitimer.
+
  -- Adam Conrad <adconrad@0c3.net>  Sun, 30 Dec 2012 10:22:43 -0700
 
 eglibc (2.13-38) unstable; urgency=low

Modified: glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff	2012-12-31 01:21:22 UTC (rev 5433)
+++ glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff	2013-01-05 02:32:43 UTC (rev 5434)
@@ -1,4 +1,3 @@
-commit c09eae7f3f6c714da378baa492414f73974f3a69
 Author: Richard Braun <rbraun@sceen.net>
 Date:   Wed Dec 26 16:31:14 2012 +0000
 
@@ -12,10 +11,38 @@
     * 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 fe057c9..8c0d92d 100644
+index 00cd0cc..39b30de 100644
 --- a/sysdeps/mach/hurd/setitimer.c
 +++ b/sysdeps/mach/hurd/setitimer.c
-@@ -192,7 +192,7 @@ setitimer_locked (const struct itimerval *new, struct itimerval *old,
+@@ -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 =
  	{
@@ -23,12 +50,36 @@
 +	  __sigmask (SIGALRM), SI_TIMER, SI_TIMER,
  	  &restart_itimer,
  	};
-       __mutex_lock (&_hurd_siglock);
-@@ -200,6 +200,7 @@ setitimer_locked (const struct itimerval *new, struct itimerval *old,
+-      __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);
+-      __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.  */
+ }


Reply to: