CVS: winex/scheduler synchro.c,1.21,1.22

[email protected] 31 Jul 2007 17:59:33 -0000
Newsgroups gmane.comp.emulators.winex.cvs
Message-ID <[email protected]>
Subject: winex/scheduler synchro.c,1.21,1.22Update of /var/lib/cvsd/cvsroot/winex/scheduler
In directory agravaine:/tmp/cvs-serv24402/scheduler

Modified Files:
	synchro.c 
Log Message:

Partially implement IO completion ports to the point that they can be used as task queues (ie, not associated with a file handle). Still to be done:
- finish thread accounting for blocking
- implement associating a file handle with an IO completion port
- modify relevant functions to send notifications to an associated IO completion port
- lots of testing of corner cases



Index: synchro.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/scheduler/synchro.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- synchro.c	28 Mar 2007 17:50:36 -0000	1.21
+++ synchro.c	31 Jul 2007 17:59:31 -0000	1.22
@@ -111,11 +111,11 @@
 
 
 /***********************************************************************
- *              wait_reply
+ *              wait_server_reply
  *
  * Wait for a reply on the waiting pipe of the current thread.
  */
-static int wait_reply( const void *cookie )
+int wait_server_reply( const void *cookie )
 {
     int signaled;
     struct wake_up_reply reply;
@@ -132,7 +132,7 @@
             if (reply.cookie == cookie) return reply.signaled;
             TRACE( "Stole cookie reply.cookie=%p\n", reply.cookie );
             /* we stole another reply, wait for the real one */
-            signaled = wait_reply( cookie );
+            signaled = wait_server_reply( cookie );
             /* and now put the wrong one back in the pipe */
             for (;;)
             {
@@ -301,7 +301,7 @@
             (ret == STATUS_TIMEOUT || ret == STATUS_PENDING) )
         {
             TRACE( "Hmmm. Actually have wait race\n" );
-            ret = wait_reply( cookie );
+            ret = wait_server_reply( cookie );
         }
     }
 
@@ -376,7 +376,7 @@
     }
     SERVER_END_REQ;
 
-    if (ret == STATUS_PENDING) ret = wait_reply( &cookie );
+    if (ret == STATUS_PENDING) ret = wait_server_reply( &cookie );
     if (ret != STATUS_SUCCESS) *code = -1;
     return ret;
 }
@@ -520,7 +520,7 @@
         }
         SERVER_END_REQ;
 
-        if (ret == STATUS_PENDING) ret = wait_reply( &cookie );
+        if (ret == STATUS_PENDING) ret = wait_server_reply( &cookie );
         if (ret != STATUS_USER_APC) break;
         call_apcs( alertable );
         if (alertable) break;