From d1eb7a4615a95da05f4bbc2e93e167b8afe6f0dc Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Wed, 3 Dec 2003 05:21:55 +0000 Subject: * cygthread.cc (cygthread::stub): Properly establish _threadinfo environment. (cygthread::stub2): New function. (cygthread::simplestub): Ditto. (cygthread::simplestub2): New function. * cygthread.h (cygthread::stub2): Declare new function. (cygthread::simplestub2): Ditto. * cygtls.h (_threadinfo::call): Declare new function. (_threadinfo::call2): Ditto. * dcrt0.cc (dll_crt0_1): Accommodate new _threadinfo::init which doesn't return pointer to tls. (_dll_crt0): Remove obsolete DECLARE_TLS_STORAGE. (dll_crt0): Ditto. * exceptions.cc (_threadinfo::call): New function. (_threadinfo::call2): Ditto. (_threadinfo::init): Don't return pointer. * thread.cc (pthread::thread_init_wrapper): Properly establish _threadinfo environment. (pthread::thread_init_wrapper2): New function. * thread.h (pthread::thread_init_wrapper): Remove noreturn attribute (pthread::thread_init_wrapper2): Declare new function. * winbase.h: Remove obsolete code. --- winsup/cygwin/exceptions.cc | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'winsup/cygwin/exceptions.cc') diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 6e5aa3059..15a9eb117 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -147,8 +147,22 @@ _threadinfo::reset_exception () } } -_threadinfo * -_threadinfo::init (void *, void *thread) +void +_threadinfo::call (void (*func) (void *, void *), void *arg) +{ + char buf[CYGTLS_PADSIZE]; + _my_tls.call2 (func, arg, buf); +} + +void +_threadinfo::call2 (void (*func) (void *, void *), void *arg, void *buf) +{ + init (buf); + func (arg, buf); +} + +void +_threadinfo::init (void *) { memset (this, 0, sizeof (*this)); stackptr = stack; @@ -157,7 +171,6 @@ _threadinfo::init (void *, void *thread) _last_thread = this; set_state (false); errno_addr = &errno; - return this; } void -- cgit v1.2.3