Author: sthibault
Date: 2012-12-26 16:45:59 +0000 (Wed, 26 Dec 2012)
New Revision: 5428

Added:
   glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
Fix Hurd implementation of setitimer.

Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog        2012-12-20 20:32:48 UTC (rev 
5427)
+++ glibc-package/trunk/debian/changelog        2012-12-26 16:45:59 UTC (rev 
5428)
@@ -25,6 +25,8 @@
     fork deadlock fix.
   * patches/hurd-i386/unsubmitted-single-hurdselect-timeout.diff: Temporarily
     fix double select timeout on single fd.
+  * patches/hurd-i386/unsubmitted-setitimer_fix.diff: Fix Hurd implementation
+    of setitimer.
 
  -- Adam Conrad <[email protected]>  Mon, 19 Nov 2012 14:23:26 -0700
 

Added: 
glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff
===================================================================
--- glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff 
                        (rev 0)
+++ glibc-package/trunk/debian/patches/hurd-i386/unsubmitted-setitimer_fix.diff 
2012-12-26 16:45:59 UTC (rev 5428)
@@ -0,0 +1,34 @@
+commit c09eae7f3f6c714da378baa492414f73974f3a69
+Author: Richard Braun <[email protected]>
+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 fe057c9..8c0d92d 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,
+        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);
+@@ -200,6 +200,7 @@ setitimer_locked (const struct itimerval *new, struct 
itimerval *old,
+       {
+         preemptor.next = _hurdsig_preemptors;
+         _hurdsig_preemptors = &preemptor;
++        _hurdsig_preempted_set |= preemptor.signals;
+       }
+       __mutex_unlock (&_hurd_siglock);
+ 

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series   2012-12-20 20:32:48 UTC (rev 
5427)
+++ glibc-package/trunk/debian/patches/series   2012-12-26 16:45:59 UTC (rev 
5428)
@@ -213,6 +213,7 @@
 hurd-i386/libpthread_hurd_cond_wait.diff
 hurd-i386/tg-hurdsig-boot-fix.diff
 hurd-i386/unsubmitted-single-hurdselect-timeout.diff
+hurd-i386/unsubmitted-setitimer_fix.diff
 
 kfreebsd/submitted-libc_once.diff
 kfreebsd/local-getaddrinfo-freebsd-kernel.diff


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]
Archive: http://lists.debian.org/[email protected]

Reply via email to