diff options
author | Robert Collins <rbtcollins@hotmail.com> | 2002-09-29 23:47:45 +0000 |
---|---|---|
committer | Robert Collins <rbtcollins@hotmail.com> | 2002-09-29 23:47:45 +0000 |
commit | eb208df05a7513b23ebcc031d772f7e8db7def50 (patch) | |
tree | a27ba48f61201a169476202cbc1f51280c0a85e7 /winsup/cygwin/thread.h | |
parent | b2c3ba8ad067227f5705339c26eea18208559c4b (diff) | |
download | cygnal-eb208df05a7513b23ebcc031d772f7e8db7def50.tar.gz cygnal-eb208df05a7513b23ebcc031d772f7e8db7def50.tar.bz2 cygnal-eb208df05a7513b23ebcc031d772f7e8db7def50.zip |
2002-09-30 Robert Collins <rbtcollins@hotmail.com>
* pthread.cc (pthread_mutex_init): Use new pthread_mutex::init.
* thread.cc: Change __pthread_mutex_init to pthread_mutex::init
throughout.
(MTinterface::Init): Initialise pthread_mutex support.
(pthread_mutex::mutexInitializationLock): Instantiate.
(pthread_mutex::initMutex): New method.
(__pthread_cond_dowait): Don't dereference untrusted pointers.
Use the new pthread_mutex::init method.
(__pthread_condattr_init): Don't dereference untrusted pointers.
(__pthread_mutex_init): Rename to pthread_mutex::init.
Lock and release mutexInitializationLock to prevent races on
mutex initialisation.
* thread.h (pthread_mutex::initMutex): New method, initialise
pthread_mutex supporting state on process initialisation.
(pthread_mutex::init): Initialise a single mutex.
(pthread_mutex::mutexInitializationLock): A win32 mutex for
syncronising pthread mutex initialisation.
(__pthread_mutex_init): Remove this.
Diffstat (limited to 'winsup/cygwin/thread.h')
-rw-r--r-- | winsup/cygwin/thread.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/winsup/cygwin/thread.h b/winsup/cygwin/thread.h index 0ac429e14..77a461ffd 100644 --- a/winsup/cygwin/thread.h +++ b/winsup/cygwin/thread.h @@ -291,6 +291,9 @@ public: static bool isGoodObject(pthread_mutex_t const *); static bool isGoodInitializer(pthread_mutex_t const *); static bool isGoodInitializerOrObject(pthread_mutex_t const *); + static void initMutex (); + static int init (pthread_mutex_t *, const pthread_mutexattr_t *); + CRITICAL_SECTION criticalsection; HANDLE win32_obj_id; LONG condwaits; @@ -305,6 +308,8 @@ public: pthread_mutex (pthread_mutexattr * = NULL); pthread_mutex (pthread_mutex_t *, pthread_mutexattr *); ~pthread_mutex (); +private: + static HANDLE mutexInitializationLock; }; class pthread:public verifyable_object @@ -561,7 +566,6 @@ int __pthread_sigmask (int operation, const sigset_t * set, int __pthread_equal (pthread_t * t1, pthread_t * t2); /* Mutexes */ -int __pthread_mutex_init (pthread_mutex_t *, const pthread_mutexattr_t *); int __pthread_mutex_lock (pthread_mutex_t *); int __pthread_mutex_trylock (pthread_mutex_t *); int __pthread_mutex_unlock (pthread_mutex_t *); |