* exceptions.cc (signal_exit): Move captive process termintation...

(_cygtls::interrupt_setup): ...into here.
(sigpacket::process): Simplify setting of handler when have_execed.
(_cygtls::interrupt_setup): Don't call proc_subproc when we've execed.
* globals.cc (exit_states): Delete unneeded ES_EXEC_EXIT.
* pinfo.cc (pinfo::exit): Change debugging output.  Call proc_terminate rather
than the now-obsolete sigproc_terminate.  Don't set exit_state to ES_EXEC_EXIT.
Set exit_state to ES_FINAL later.
* sigproc.cc (sigproc_terminate): Delete function.
(wait_sig): Don't call proc_subproc if have_execed.
* sigproc.h (sigproc_terminate): Delete declaration.
* sync.h (lock_process::lock_process): Don't set exit_state to
ES_PROCESS_LOCKED.
(lock_process::operator LONG): Define.
This commit is contained in:
Christopher Faylor
2013-01-14 06:03:59 +00:00
parent cdc1925e02
commit b712b4408a
7 changed files with 31 additions and 38 deletions

View File

@@ -467,21 +467,6 @@ sigproc_init ()
new cygthread (wait_sig, cygself, "sig");
}
/* Called on process termination to terminate signal and process threads.
*/
void __stdcall
sigproc_terminate (exit_states es)
{
exit_states prior_exit_state = exit_state;
exit_state = es;
if (!cygwin_finished_initializing)
/* nothing to do */;
else if (prior_exit_state >= ES_FINAL)
sigproc_printf ("already performed");
else
proc_terminate (); // clean up process stuff
}
/* Exit the current thread very carefully.
See cgf-000017 in DevNotes for more details on why this is
necessary. */
@@ -1427,7 +1412,7 @@ wait_sig (VOID *)
}
break;
}
if (clearwait)
if (clearwait && !have_execed)
proc_subproc (PROC_CLEARWAIT, 0);
loop:
if (pack.wakeup)