From 370b1173b0d8bef55257fa50d393b06910d5cebc Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sat, 20 Sep 2003 02:43:18 +0000 Subject: * thread.h (__reent_t::init_clib): Declare new function. * thread.cc (__reent_t::init_clib): Define new function. (pthread::thread_init_wrapper): Use __reent_t::init_clib to init local clib storage and set std{in,out,err} appropriately. --- winsup/cygwin/thread.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'winsup/cygwin/thread.cc') diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index 2304b7b42..6931b3914 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -1769,6 +1769,16 @@ verifyable_object_isvalid (void const * objectptr, long magic) return verifyable_object_isvalid (objectptr, magic, NULL); } +inline void +__reent_t::init_clib (struct _reent& var) +{ + var = ((struct _reent) _REENT_INIT (var)); + var._stdin = _GLOBAL_REENT->_stdin; + var._stdout = _GLOBAL_REENT->_stdout; + var._stderr = _GLOBAL_REENT->_stderr; + _clib = &var; +}; + /* Pthreads */ void * pthread::thread_init_wrapper (void *_arg) @@ -1778,7 +1788,7 @@ pthread::thread_init_wrapper (void *_arg) pthread *thread = (pthread *) _arg; struct __reent_t local_reent; struct _winsup_t local_winsup; - struct _reent local_clib = _REENT_INIT (local_clib); + struct _reent local_clib; struct sigaction _sigs[NSIG]; sigset_t _sig_mask; /* one set for everything to ignore. */ @@ -1791,7 +1801,7 @@ pthread::thread_init_wrapper (void *_arg) memset (&local_winsup, 0, sizeof (struct _winsup_t)); - local_reent._clib = &local_clib; + local_reent.init_clib (local_clib); local_reent._winsup = &local_winsup; local_winsup._process_logmask = LOG_UPTO (LOG_DEBUG); -- cgit v1.2.3