* cygheap.cc (cygheap_fixup_in_child): It's not just for exec.
* cygtls.h (struct _cygtls::thread_handle): New field. * dcrt0.cc (exit_lock): Remove declaration. * winsup.h (exit_lock): Add declaration. * exceptions.cc (sigpacket::process): Properly return after signal_exit. * pinfo.cc (pinfo::exit): Only exit the process if _my_tls.thread_handle has not been filled out -- which should be an impossible event. * sigproc.cc (sigproc_terminate): Fillout _my_tls.thread_handle to provide something for wait_sig to wait for. Use the siginfo_t version of sig_send and fill out the tls argument with _my_tls. (wait_sig): Wait for the thread specified in pack.tls or (for now) complain bitterly if it doesn't exit.
This commit is contained in:
@@ -176,14 +176,15 @@ struct _cygtls
|
||||
siginfo_t infodata;
|
||||
struct pthread *tid;
|
||||
union
|
||||
{
|
||||
struct _reent local_clib;
|
||||
char __dontuse[8 * ((sizeof(struct _reent) + 4) / 8)];
|
||||
};
|
||||
{
|
||||
struct _reent local_clib;
|
||||
char __dontuse[8 * ((sizeof(struct _reent) + 4) / 8)];
|
||||
};
|
||||
struct _local_storage locals;
|
||||
class cygthread *_ctinfo;
|
||||
san andreas;
|
||||
waitq wq;
|
||||
HANDLE thread_handle;
|
||||
struct _cygtls *prev, *next;
|
||||
__stack_t *stackptr;
|
||||
int sig;
|
||||
|
Reference in New Issue
Block a user