OSDN Git Service

* shared.cc (user_shared_initialize): Rework locking so that nothing is checked
authorcgf <cgf>
Wed, 4 May 2005 01:20:05 +0000 (01:20 +0000)
committercgf <cgf>
Wed, 4 May 2005 01:20:05 +0000 (01:20 +0000)
until cb is non-zero.

winsup/cygwin/shared.cc

index dcb26a9..b1b4dc4 100644 (file)
@@ -189,23 +189,20 @@ user_shared_initialize (bool reinit)
   /* Initialize the Cygwin per-user shared, if necessary */
   if (!sversion)
     {
-      user_shared->version = USER_VERSION_MAGIC;
       debug_printf ("initializing user shared");
-      user_shared->cb =  sizeof (*user_shared);
-      if (user_shared->cb != sizeof (*user_shared))
-       system_printf ("size of user shared region changed from %u to %u",
-                      sizeof (*user_shared), user_shared->cb);
       user_shared->mountinfo.init ();  /* Initialize the mount table.  */
-      /* Initialize the queue of deleted files.  */
-      user_shared->delqueue.init ();
+      user_shared->delqueue.init (); /* Initialize the queue of deleted files.  */
+      user_shared->cb =  sizeof (*user_shared);
     }
-  else if (user_shared->version != USER_VERSION_MAGIC)
-    multiple_cygwin_problem ("user shared memory version", user_shared->version, USER_VERSION_MAGIC);
-  else if (user_shared->cb != sizeof (*user_shared))
-    multiple_cygwin_problem ("user shared memory size", user_shared->cb, sizeof (*user_shared));
   else
+    {
       while (!user_shared->cb)
        low_priority_sleep (0); // Should be hit only very very rarely
+      if (user_shared->version != sversion)
+       multiple_cygwin_problem ("user shared memory version", user_shared->version, sversion);
+      else if (user_shared->cb != sizeof (*user_shared))
+       multiple_cygwin_problem ("user shared memory size", user_shared->cb, sizeof (*user_shared));
+    }
 }
 
 void