natPosixProcess.cc (sigchld_handler): Remove 'si' and 'third' parameters.
2007-08-15 Samuel Thibault <samuel.thibault@ens-lyon.org> * java/lang/natPosixProcess.cc (sigchld_handler) [!SA_SIGINFO]: Remove 'si' and 'third' parameters. Disable calling pmi->old_sigaction.sa_sigaction. (java::lang::PosixProcess*ProcessManager::init) [!SA_SIGINFO]: Set sa.sa_handler instead of sa.sa_sigaction, don't set SA_SIGINFO flag. From-SVN: r127507
This commit is contained in:
parent
f2b6bf20c6
commit
2a97f34e67
2 changed files with 20 additions and 0 deletions
|
@ -110,7 +110,11 @@ namespace
|
|||
// sigwait() on SIGCHLD. The information passed is ignored as it
|
||||
// will be recovered by the waitpid() call.
|
||||
static void
|
||||
#ifdef SA_SIGINFO
|
||||
sigchld_handler (int sig, siginfo_t *si, void *third)
|
||||
#else
|
||||
sigchld_handler (int sig)
|
||||
#endif
|
||||
{
|
||||
if (PosixProcess$ProcessManager::nativeData != NULL)
|
||||
{
|
||||
|
@ -121,9 +125,11 @@ sigchld_handler (int sig, siginfo_t *si, void *third)
|
|||
if (pmi->old_sigaction.sa_handler != SIG_DFL
|
||||
&& pmi->old_sigaction.sa_handler != SIG_IGN)
|
||||
{
|
||||
#ifdef SA_SIGINFO
|
||||
if ((pmi->old_sigaction.sa_flags & SA_SIGINFO) != 0)
|
||||
pmi->old_sigaction.sa_sigaction(sig, si, third);
|
||||
else
|
||||
#endif
|
||||
(*pmi->old_sigaction.sa_handler)(sig);
|
||||
}
|
||||
}
|
||||
|
@ -156,9 +162,15 @@ java::lang::PosixProcess$ProcessManager::init ()
|
|||
struct sigaction sa;
|
||||
memset (&sa, 0, sizeof (sa));
|
||||
|
||||
#ifdef SA_SIGINFO
|
||||
sa.sa_sigaction = sigchld_handler;
|
||||
// We only want signals when the things exit.
|
||||
sa.sa_flags = SA_NOCLDSTOP | SA_SIGINFO;
|
||||
#else
|
||||
sa.sa_handler = sigchld_handler;
|
||||
// We only want signals when the things exit.
|
||||
sa.sa_flags = SA_NOCLDSTOP;
|
||||
#endif
|
||||
|
||||
if (-1 == sigaction (SIGCHLD, &sa, &pmi->old_sigaction))
|
||||
goto error;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue