minor cleanups
This commit is contained in:
		| @@ -1,6 +1,7 @@ | ||||
| Wed Sep 12 13:03:00 2001  Robert Collins <rbtcollins@hotmail.com> | ||||
|  | ||||
| 	* autoload.cc (LoadDLLfuncEx): Auto load TryEnterCriticalSection - its an NT only call. | ||||
| 	* autoload.cc (LoadDLLfuncEx): Auto load TryEnterCriticalSection - it's | ||||
| 	an NT only call. | ||||
| 	* thread.cc (pthread_cond::TimedWait): Use critical sections for NT. | ||||
| 	(pthread_cond::fixup_after_fork): Don't detect bad apps. | ||||
| 	(pthread_mutex::pthread_mutex): Use critical sections for NT. | ||||
| @@ -8,9 +9,11 @@ Wed Sep 12 13:03:00 2001  Robert Collins <rbtcollins@hotmail.com> | ||||
| 	(pthread_mutex::Lock): Ditto. | ||||
| 	(pthread_mutex::TryLock): Ditto. | ||||
| 	(pthread_mutex::UnLock): Ditto. | ||||
| 	(pthread_mutex::fixup_after_fork): Ditto. Also do not detect bad apps. | ||||
| 	(__pthread_mutex_trylock): Move WIN32 specific test into the class method. | ||||
| 	(__pthread_mutex_destroy): Prevent dereferencing passed pointer without valid address. | ||||
| 	(pthread_mutex::fixup_after_fork): Ditto.  Also do not detect bad apps. | ||||
| 	(__pthread_mutex_trylock): Move WIN32 specific test into the class | ||||
| 	method. | ||||
| 	(__pthread_mutex_destroy): Prevent dereferencing passed pointer without | ||||
| 	valid address. | ||||
| 	* thread.h (pthread_mutex): Use critical sections for NT. | ||||
|  | ||||
| Tue Sep 11 21:55:37 2001  Christopher Faylor <cgf@cygnus.com> | ||||
| @@ -77,11 +80,11 @@ Sun Sep  9 20:09:11 2001  Christopher Faylor <cgf@cygnus.com> | ||||
|  | ||||
| Mon Sep 10 08:28:00 2001  Robert Collins <rbtcollins@hotmail.com> | ||||
|  | ||||
| 	* thread.h (MT_Interface): Remove pshared mutex array.  | ||||
| 	Add a threadsafe list for mutex tracking (for fixup after fork).  | ||||
| 	* thread.h (MT_Interface): Remove pshared mutex array.  Add a | ||||
| 	threadsafe list for mutex tracking (for fixup after fork). | ||||
| 	* thread.cc (MTInterface::Init): Remove pshared mutex array. | ||||
| 	(pthread_mutex::pthread_mutex): Remove pshared mutex functionality.  | ||||
| 	Fail with EINVAL on attempts to	use pshared functionality. | ||||
| 	(pthread_mutex::pthread_mutex): Remove pshared mutex functionality. | ||||
| 	Fail with EINVAL on attempts to use pshared functionality. | ||||
| 	(__pthread_mutex_getpshared): Remove. | ||||
| 	(__pthread_cond_timedwait): Remove pshared mutex functionality. | ||||
| 	(__pthread_cond_wait): Ditto. | ||||
| @@ -93,8 +96,8 @@ Mon Sep 10 08:28:00 2001  Robert Collins <rbtcollins@hotmail.com> | ||||
| 	(__pthread_mutex_destroy): Ditto. | ||||
| 	(__pthread_mutex_setprioceiling): Ditto. | ||||
| 	(__pthread_mutexattr_setpshared): Ditto. | ||||
| 	 | ||||
| Sun Sep  9 23:09:00 2001  Corinna Vinschen <corinna@vinschen.de> | ||||
|  | ||||
| Sun Sep 9 23:09:00 2001 Corinna Vinschen <corinna@vinschen.de> | ||||
|  | ||||
| 	* pwdgrp.h (pwdgrp_check::set_last_modified): Call GetFileTime() | ||||
| 	instead of GetFileInformationByHandle(). | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
|    Copyright 1998, 1999, 2000, 2001 Red Hat, Inc. | ||||
|  | ||||
|    Originally written by Marco Fuykschot <marco@ddi.nl> | ||||
|    Substantialy enhanced by Robert Collins <<rbtcollins@hotmail.com> | ||||
|  | ||||
| This file is part of Cygwin. | ||||
|  | ||||
| @@ -10,19 +11,19 @@ This software is a copyrighted work licensed under the terms of the | ||||
| Cygwin license.  Please consult the file "CYGWIN_LICENSE" for | ||||
| details. */ | ||||
|  | ||||
| /*Implementation overview and caveats: | ||||
| /* Implementation overview and caveats: | ||||
|  | ||||
|   Win32 puts some contraints on what can and cannot be implemented. Where possible | ||||
|   we work around those contrainsts. Where we cannot work around the constraints we | ||||
|   either pretend to be conformant, or return an error code. | ||||
|    Win32 puts some contraints on what can and cannot be implemented.  Where | ||||
|    possible we work around those contrainsts.  Where we cannot work around | ||||
|    the constraints we either pretend to be conformant, or return an error | ||||
|    code. | ||||
|  | ||||
|   Some caveats: PROCESS_SHARED objects while they pretend to be process shared, | ||||
|   may not actually work. Some test cases are needed to determine win32's behaviour. | ||||
|   My suspicion is that the win32 handle needs to be opened with different flags for | ||||
|   proper operation. | ||||
|    Some caveats: PROCESS_SHARED objects while they pretend to be process | ||||
|    shared, may not actually work.  Some test cases are needed to determine | ||||
|    win32's behaviour.  My suspicion is that the win32 handle needs to be | ||||
|    opened with different flags for proper operation. | ||||
|  | ||||
|   R.Collins, April 2001. | ||||
|   */ | ||||
|    R.Collins, April 2001.  */ | ||||
|  | ||||
| #ifdef HAVE_CONFIG_H | ||||
| # include "config.h" | ||||
| @@ -449,7 +450,7 @@ pthread_cond::~pthread_cond () | ||||
|     { | ||||
|       pthread_cond *tempcond = MT_INTERFACE->conds; | ||||
|       while (tempcond->next && tempcond->next != this) | ||||
|         tempcond = tempcond->next; | ||||
| 	tempcond = tempcond->next; | ||||
|       /* but there may be a race between the loop above and this statement */ | ||||
|       InterlockedExchangePointer (&tempcond->next, this->next); | ||||
|     } | ||||
| @@ -514,7 +515,7 @@ pthread_cond::TimedWait (DWORD dwMilliseconds) | ||||
|      * critical sections, which are faster, but introduce a race _here_. Until then | ||||
|      * The NT variant of the code is redundant. | ||||
|      */ | ||||
| 	      | ||||
|  | ||||
|     rv = SignalObjectAndWait (mutex->win32_obj_id, win32_obj_id, dwMilliseconds, | ||||
| 			 false); | ||||
| #endif | ||||
| @@ -626,7 +627,7 @@ pthread_mutex::pthread_mutex (pthread_mutexattr *attr):verifyable_object (PTHREA | ||||
|     { | ||||
|       this->win32_obj_id =::CreateMutex (&sec_none_nih, false, NULL); | ||||
|       if (!win32_obj_id) | ||||
|         magic = 0; | ||||
| 	magic = 0; | ||||
|     } | ||||
|   condwaits = 0; | ||||
|   pshared = PTHREAD_PROCESS_PRIVATE; | ||||
| @@ -641,7 +642,7 @@ pthread_mutex::~pthread_mutex () | ||||
|   else | ||||
|     { | ||||
|       if (win32_obj_id) | ||||
|         CloseHandle (win32_obj_id); | ||||
| 	CloseHandle (win32_obj_id); | ||||
|       win32_obj_id = NULL; | ||||
|     } | ||||
|   /* I'm not 100% sure the next bit is threadsafe. I think it is... */ | ||||
| @@ -704,7 +705,7 @@ pthread_mutex::fixup_after_fork () | ||||
|     { | ||||
|       win32_obj_id =::CreateMutex (&sec_none_nih, false, NULL); | ||||
|       if (!win32_obj_id) | ||||
|         api_fatal("pthread_mutex::fixup_after_fork() failed to create new win32 mutex\n"); | ||||
| 	api_fatal("pthread_mutex::fixup_after_fork() failed to create new win32 mutex\n"); | ||||
|     } | ||||
| #if DETECT_BAD_APPS | ||||
|   if (condwaits) | ||||
| @@ -746,7 +747,7 @@ semaphore::~semaphore () | ||||
|     { | ||||
|       semaphore *tempsem = MT_INTERFACE->semaphores; | ||||
|       while (tempsem->next && tempsem->next != this) | ||||
|         tempsem = tempsem->next; | ||||
| 	tempsem = tempsem->next; | ||||
|       /* but there may be a race between the loop above and this statement */ | ||||
|       InterlockedExchangePointer (&tempsem->next, this->next); | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user