* init.cc: Cleanup slightly and remove obsolete code.
This commit is contained in:
		| @@ -1,11 +1,15 @@ | ||||
| 2002-09-16  Christopher Faylor  <cgf@redhat.com> | ||||
|  | ||||
| 	* init.cc: Cleanup slightly and remove obsolete code. | ||||
|  | ||||
| 2002-09-11  Robert Collins  <rbtcollins@hotmail.com> | ||||
|  | ||||
| 	* init.cc (dll_entry): On thread detach, if the thread hasn't | ||||
| 	exit()ed, do so. | ||||
| 	* pthread.cc (pthread_getsequence_np): Remove the  | ||||
| 	* pthread.cc (pthread_getsequence_np): Remove the | ||||
| 	__pthread_getsequence_np wrapper. This requires errno.h. | ||||
| 	* thread.cc (pthread::self): Instantiate a new pthread object  | ||||
| 	when called and none exists. return a NULL object if instantiation  | ||||
| 	* thread.cc (pthread::self): Instantiate a new pthread object | ||||
| 	when called and none exists. return a NULL object if instantiation | ||||
| 	fails. | ||||
| 	(pthread::precreate): Factor out common code. | ||||
| 	(pthread::postcreate): Ditto. | ||||
| @@ -38,7 +42,7 @@ | ||||
| 	(__pthread_getsequence_np): Remove. | ||||
| 	(__pthread_setschedparam): Apply Extract Method to the object | ||||
| 	validation. | ||||
| 	(pthreadNull::getNullpthread): New method, return the pthreadNull  | ||||
| 	(pthreadNull::getNullpthread): New method, return the pthreadNull | ||||
| 	object. | ||||
| 	(pthreadNull::pthreadNull): Private constructor to prevent accidental | ||||
| 	use. | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* init.cc | ||||
|  | ||||
|    Copyright 1996, 1997, 1998, 1999, 2000, 2001 Red Hat, Inc. | ||||
|    Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. | ||||
|  | ||||
| This file is part of Cygwin. | ||||
|  | ||||
| @@ -38,23 +38,10 @@ WINAPI dll_entry (HANDLE h, DWORD reason, void *static_load) | ||||
|       pthread *thisthread = (pthread *) TlsGetValue ( | ||||
| 			user_data->threadinterface->thread_self_dwTlsIndex); | ||||
|       if (thisthread) { | ||||
| 	  /* Some non-pthread call created this thread,  | ||||
| 	  /* Some non-pthread call created this thread, | ||||
| 	   * but we need to clean it up */ | ||||
| 	  thisthread->exit(0); | ||||
|       } | ||||
| #if 0 // FIXME: REINSTATE SOON | ||||
|       waitq *w; | ||||
|       if ((w = waitq_storage.get ()) != NULL) | ||||
| 	{ | ||||
| 	  if (w->thread_ev != NULL) | ||||
| 	    { | ||||
| 	      system_printf ("closing %p", w->thread_ev); | ||||
| 	      (void) CloseHandle (w->thread_ev); | ||||
| 	    } | ||||
| 	  memset (w, 0, sizeof(*w));	// FIXME: memory leak | ||||
| 	} | ||||
| 	// FIXME: Need to add other per_thread stuff here | ||||
| #endif | ||||
|       break; | ||||
|     } | ||||
|   return 1; | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* pthread.cc: posix pthread interface for Cygwin | ||||
|  | ||||
|    Copyright 1998, 1999, 2000, 2001 Red Hat, Inc. | ||||
|    Copyright 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. | ||||
|  | ||||
|    Originally written by Marco Fuykschot <marco@ddi.nl> | ||||
|  | ||||
|   | ||||
| @@ -377,8 +377,8 @@ pthread::setTlsSelfPointer(pthread *thisThread) | ||||
|  | ||||
| /* member methods */ | ||||
| pthread::pthread ():verifyable_object (PTHREAD_MAGIC), win32_obj_id (0), | ||||
|                     cancelstate (0), canceltype (0), cancel_event(0), | ||||
|                     joiner (NULL), cleanup_stack(NULL)  | ||||
| 		    cancelstate (0), canceltype (0), cancel_event(0), | ||||
| 		    joiner (NULL), cleanup_stack(NULL) | ||||
| { | ||||
| } | ||||
|  | ||||
| @@ -434,7 +434,7 @@ pthread::precreate (pthread_attr *newattr) | ||||
| void | ||||
| pthread::create (void *(*func) (void *), pthread_attr *newattr, | ||||
| 		 void *threadarg) | ||||
| {  | ||||
| { | ||||
|   precreate (newattr); | ||||
|   if (!magic) | ||||
|       return; | ||||
| @@ -483,7 +483,7 @@ pthread::exit (void *value_ptr) | ||||
|   if( __pthread_equal(&joiner, &thread ) ) | ||||
|     delete this; | ||||
|   else | ||||
|     {   | ||||
|     { | ||||
|       return_ptr = value_ptr; | ||||
|       mutex.UnLock (); | ||||
|     } | ||||
| @@ -739,7 +739,7 @@ pthread::setcancelstate (int state, int *oldstate) | ||||
|   else | ||||
|     { | ||||
|       if (oldstate) | ||||
|         *oldstate = cancelstate; | ||||
| 	*oldstate = cancelstate; | ||||
|       cancelstate = state; | ||||
|     } | ||||
|  | ||||
| @@ -760,7 +760,7 @@ pthread::setcanceltype (int type, int *oldtype) | ||||
|   else | ||||
|     { | ||||
|       if (oldtype) | ||||
|         *oldtype = canceltype; | ||||
| 	*oldtype = canceltype; | ||||
|       canceltype = type; | ||||
|     } | ||||
|  | ||||
| @@ -774,7 +774,7 @@ pthread::push_cleanup_handler (__pthread_cleanup_handler *handler) | ||||
| { | ||||
|   if (this != self ()) | ||||
|     // TODO: do it? | ||||
|     api_fatal ("Attempt to push a cleanup handler across threads");  | ||||
|     api_fatal ("Attempt to push a cleanup handler across threads"); | ||||
|   handler->next = cleanup_stack; | ||||
|   InterlockedExchangePointer( &cleanup_stack, handler ); | ||||
| } | ||||
| @@ -785,7 +785,7 @@ pthread::pop_cleanup_handler (int const execute) | ||||
|   if (this != self ()) | ||||
|     // TODO: send a signal or something to the thread ? | ||||
|     api_fatal ("Attempt to execute a cleanup handler across threads"); | ||||
|    | ||||
|  | ||||
|   mutex.Lock (); | ||||
|  | ||||
|   if (cleanup_stack != NULL) | ||||
| @@ -793,7 +793,7 @@ pthread::pop_cleanup_handler (int const execute) | ||||
|       __pthread_cleanup_handler *handler = cleanup_stack; | ||||
|  | ||||
|       if (execute) | ||||
|         (*handler->function) (handler->arg); | ||||
| 	(*handler->function) (handler->arg); | ||||
|       cleanup_stack = handler->next; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -318,7 +318,7 @@ private: | ||||
|  | ||||
| class pthreadNull : public pthread | ||||
| { | ||||
|   public:  | ||||
|   public: | ||||
|     static pthread *getNullpthread(); | ||||
|     ~pthreadNull(); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user