From 3f02a8d0f4ca99d7e82fb678db8d50819ce4156e Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sun, 6 Mar 2005 20:21:30 +0000 Subject: * sync.h (sync::init_lock): Declare new static member. (sync::init()): Declare new static function. * sync.cc (sync::init): Define. (sync::init): Lock attempt to initialize a muto to stop multiple threads from colliding. * dcrt0.cc (dll_crt0_0): Initialize muto environment. --- winsup/cygwin/sync.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'winsup/cygwin/sync.h') diff --git a/winsup/cygwin/sync.h b/winsup/cygwin/sync.h index 7e8b60c10..90e70a243 100644 --- a/winsup/cygwin/sync.h +++ b/winsup/cygwin/sync.h @@ -17,6 +17,7 @@ details. */ class muto { static DWORD exiting_thread; + static CRITICAL_SECTION init_lock; LONG sync; /* Used to serialize access to this class. */ LONG waiters; /* Number of threads waiting for lock. */ HANDLE bruteforce; /* event handle used to control waiting for lock. */ @@ -39,6 +40,7 @@ public: void upforgrabs () {tls = this;} // just set to an invalid address void grab () __attribute__ ((regparm (1))); static void set_exiting_thread () {exiting_thread = GetCurrentThreadId ();} + static void init (); }; extern muto muto_start; -- cgit v1.2.3