diff options
author | Christopher Faylor <me@cgf.cx> | 2012-08-09 23:58:53 +0400 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2012-08-09 23:58:53 +0400 |
commit | 52d2371da52be037af8020220650645df497d90d (patch) | |
tree | 981b4d875ae69b48fc6dfd2451f72c82002f14cd /winsup/cygwin/DevNotes | |
parent | cc02df128665f400e911e1f67e9963e827962914 (diff) |
* 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.
Diffstat (limited to 'winsup/cygwin/DevNotes')
-rw-r--r-- | winsup/cygwin/DevNotes | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/winsup/cygwin/DevNotes b/winsup/cygwin/DevNotes index e78348897..68d8320cd 100644 --- a/winsup/cygwin/DevNotes +++ b/winsup/cygwin/DevNotes @@ -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 |