* DevNotes: Add entry cgf-000014.
* cygheap.cc (tls_sentry): Move here, rename from 'sentry' in cygtls.cc (tls_sentry::lock): Ditto. (nthreads): Move from cygtls.cc (THREADLIST_CHUNK): Ditto. (cygheap_init): Call init_tls_list(). (init_cygheap::init_tls_list): Define new function. (init_cygheap::add_tls): Ditto. (init_cygheap::remove_tls): Ditto. (init_cygheap::find_tls): Ditto. Semi-resurrect from _cygtls::find_tls. * cygheap.h (init_cygheap::init_tls_list): Declare new function. (init_cygheap::add_tls): Ditto. (init_cygheap::remove_tls): Ditto. (init_cygheap::find_tls): Ditto. * cygtls.cc (sentry): Delete. (sentry::lock): Ditto. (nthreads): Ditto. (THREADLIST_CHUNK): Ditto. (_cygtls::init): Delete definition. (_cygtls::init_thread): Call cygheap->add_tls() to add thread to global list. (_cygtls::remove): cygheap->remove_tls() to remove thread from global list. * cygtls.h (_cygtls::init): Delete declaration. * dcrt0.cc (dll_crt0_0): Delete call to _cygtls::init(). * exceptions.cc (sigpacket::process): When no thread is specified, try to find one via cygheap->find_tls.
This commit is contained in:
@ -1,3 +1,16 @@
|
||||
2012-08-09 cgf-000014
|
||||
|
||||
So, apparently I got it somewhat right before wrt signal handling.
|
||||
Checking on linux, it appears that signals will be sent to a thread
|
||||
which can accept the signal. So resurrecting and extending the
|
||||
"find_tls" function is in order. This function will return the tls
|
||||
of any thread which 1) is waiting for a signal with sigwait*() or
|
||||
2) has the signal unmasked.
|
||||
|
||||
In redoing this it became obvious that I had the class designation wrong
|
||||
for the threadlist handling so I moved the manipulation of the global
|
||||
threadlist into the cygheap where it logically belongs.
|
||||
|
||||
2012-07-21 cgf-000013
|
||||
|
||||
These changes reflect a revamp of the "wait for signal" functionality
|
||||
|
Reference in New Issue
Block a user