[Glibc-bsd-commits] r2744 - in trunk: glibc-ports/kfreebsd kfreebsd-7/debian/patches kfreebsd-8/debian/patches
Petr Salinger
ps-guest at alioth.debian.org
Thu Aug 27 18:53:26 UTC 2009
Author: ps-guest
Date: 2009-08-27 18:53:26 +0000 (Thu, 27 Aug 2009)
New Revision: 2744
Modified:
trunk/glibc-ports/kfreebsd/clone.c
trunk/kfreebsd-7/debian/patches/007_clone_signals.diff
trunk/kfreebsd-8/debian/patches/007_clone_signals.diff
Log:
play with clone signal handling
- be backward compatible
- start thread manager without any exit notification for parent
Modified: trunk/glibc-ports/kfreebsd/clone.c
===================================================================
--- trunk/glibc-ports/kfreebsd/clone.c 2009-08-26 19:15:43 UTC (rev 2743)
+++ trunk/glibc-ports/kfreebsd/clone.c 2009-08-27 18:53:26 UTC (rev 2744)
@@ -62,14 +62,17 @@
return -1;
}
- if ((flags & CSIGNAL) != 0 && (flags & CSIGNAL) != SIGCHLD)
+ if ((flags & CSIGNAL) != SIGCHLD)
{
if ((flags & CSIGNAL) & ~RFTHPNMASK)
{
__set_errno (EINVAL);
return -1;
}
- rfork_flags |= (RFLINUXTHPN | ((flags & CSIGNAL) << RFTHPNSHIFT));
+ if ((flags & CSIGNAL) == 0)
+ rfork_flags |= (RFLINUXTHPN | ((SIGCHLD) << RFTHPNSHIFT));
+ else
+ rfork_flags |= (RFLINUXTHPN | ((flags & CSIGNAL) << RFTHPNSHIFT));
}
if (flags & CLONE_VM)
Modified: trunk/kfreebsd-7/debian/patches/007_clone_signals.diff
===================================================================
--- trunk/kfreebsd-7/debian/patches/007_clone_signals.diff 2009-08-26 19:15:43 UTC (rev 2743)
+++ trunk/kfreebsd-7/debian/patches/007_clone_signals.diff 2009-08-27 18:53:26 UTC (rev 2744)
@@ -2,7 +2,7 @@
===================================================================
--- src.orig/sys/kern/kern_fork.c
+++ src/sys/kern/kern_fork.c
-@@ -529,7 +529,11 @@
+@@ -529,7 +529,13 @@
p2->p_sigacts = newsigacts;
}
if (flags & RFLINUXTHPN)
@@ -10,7 +10,9 @@
+ {
+ int sig;
+ sig = RFTHPNSIGNUM(flags);
-+ p2->p_sigparent = sig ? sig : SIGUSR1;
++ if (sig == 0) sig = SIGUSR1;
++ if (sig == SIGCHLD) sig = 0;
++ p2->p_sigparent = sig;
+ }
else
p2->p_sigparent = SIGCHLD;
Modified: trunk/kfreebsd-8/debian/patches/007_clone_signals.diff
===================================================================
--- trunk/kfreebsd-8/debian/patches/007_clone_signals.diff 2009-08-26 19:15:43 UTC (rev 2743)
+++ trunk/kfreebsd-8/debian/patches/007_clone_signals.diff 2009-08-27 18:53:26 UTC (rev 2744)
@@ -1,6 +1,6 @@
--- src.orig/sys/kern/kern_fork.c
+++ src/sys/kern/kern_fork.c
-@@ -561,7 +561,11 @@
+@@ -561,7 +561,13 @@
p2->p_sigacts = newsigacts;
}
if (flags & RFLINUXTHPN)
@@ -8,7 +8,9 @@
+ {
+ int sig;
+ sig = RFTHPNSIGNUM(flags);
-+ p2->p_sigparent = sig ? sig : SIGUSR1;
++ if (sig == 0) sig = SIGUSR1;
++ if (sig == SIGCHLD) sig = 0;
++ p2->p_sigparent = sig;
+ }
else
p2->p_sigparent = SIGCHLD;
More information about the Glibc-bsd-commits
mailing list