* 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.
			
			
This commit is contained in:
		| @@ -1,3 +1,10 @@ | |||||||
|  | 2003-09-19  Christopher Faylor  <cgf@redhat.com> | ||||||
|  |  | ||||||
|  | 	* 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. | ||||||
|  |  | ||||||
| 2003-09-19  Christopher Faylor  <cgf@redhat.com> | 2003-09-19  Christopher Faylor  <cgf@redhat.com> | ||||||
|  |  | ||||||
| 	* syscalls.cc (system): Strip signal considerations from here so that | 	* syscalls.cc (system): Strip signal considerations from here so that | ||||||
|   | |||||||
| @@ -1769,6 +1769,16 @@ verifyable_object_isvalid (void const * objectptr, long magic) | |||||||
|   return verifyable_object_isvalid (objectptr, magic, NULL); |   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 */ | /* Pthreads */ | ||||||
| void * | void * | ||||||
| pthread::thread_init_wrapper (void *_arg) | pthread::thread_init_wrapper (void *_arg) | ||||||
| @@ -1778,7 +1788,7 @@ pthread::thread_init_wrapper (void *_arg) | |||||||
|   pthread *thread = (pthread *) _arg; |   pthread *thread = (pthread *) _arg; | ||||||
|   struct __reent_t local_reent; |   struct __reent_t local_reent; | ||||||
|   struct _winsup_t local_winsup; |   struct _winsup_t local_winsup; | ||||||
|   struct _reent local_clib = _REENT_INIT (local_clib); |   struct _reent local_clib; | ||||||
|  |  | ||||||
|   struct sigaction _sigs[NSIG]; |   struct sigaction _sigs[NSIG]; | ||||||
|   sigset_t _sig_mask;		/* one set for everything to ignore. */ |   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)); |   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_reent._winsup = &local_winsup; | ||||||
|  |  | ||||||
|   local_winsup._process_logmask = LOG_UPTO (LOG_DEBUG); |   local_winsup._process_logmask = LOG_UPTO (LOG_DEBUG); | ||||||
|   | |||||||
| @@ -108,6 +108,7 @@ struct __reent_t | |||||||
| { | { | ||||||
|   struct _reent *_clib; |   struct _reent *_clib; | ||||||
|   struct _winsup_t *_winsup; |   struct _winsup_t *_winsup; | ||||||
|  |   void init_clib (_reent&); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| _winsup_t *_reent_winsup (); | _winsup_t *_reent_winsup (); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user