* exceptions.cc (interruptible): Change method for determining if something is
interruptible. (call_handler): Avoid suspending a thread if it owns a mutex. Only set signal_arrived if the thread was actually interrupted. (events_init): Initialize module information needed by interruptible(). (sigdelayed): Don't call sig_dispatch_pending since it could screw up * init.cc (dll_entry): Record module handle of main for use by interruptible(). (proc_subproc): Reorganize handling of terminated child so that the bulk of the processing comes from the signal thread. (wait_sig): Force processing of waiting threads if SIGCHLD is not processed. * sync.cc (muto::release): Set tid == 0 after lock is released or signal processor will be confused.
This commit is contained in:
@ -18,7 +18,8 @@ enum procstuff
|
||||
PROC_CHILDSTOPPED = 2, // a child stopped
|
||||
PROC_CHILDTERMINATED = 3, // a child died
|
||||
PROC_CLEARWAIT = 4, // clear all waits - signal arrived
|
||||
PROC_WAIT = 5 // setup for wait() for subproc
|
||||
PROC_WAIT = 5, // setup for wait() for subproc
|
||||
PROC_SIGCHLD = 6 // saw a non-trapped SIGCHLD
|
||||
};
|
||||
|
||||
typedef struct struct_waitq
|
||||
|
Reference in New Issue
Block a user