]> git.pond.sub.org Git - empserver/commitdiff
LWP failed to wake up threads sleeping in empth_sleep() while other
authorMarkus Armbruster <armbru@pond.sub.org>
Fri, 20 Jul 2007 18:12:03 +0000 (18:12 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Fri, 20 Jul 2007 18:12:03 +0000 (18:12 +0000)
threads were runnable.  This let players with a sufficiently fast
connection starve out system threads, including the update.  Fix:
[EMPTH_LWP] (lwpWakeupSleep): External linkage.
[EMPTH_LWP] (lwpReschedule): Call it.

src/lib/lwp/lwp.c
src/lib/lwp/lwpint.h
src/lib/lwp/sel.c

index a3bb2423eeda88c5af0000717a39392129186791..d5602b1bc5f1acc5a2df4bb1cc85f3e60ca424a6 100644 (file)
@@ -76,6 +76,7 @@ lwpReschedule(void)
     }
 
     lwpSigWakeup();
+    lwpWakeupSleep();
 
     /* destroy dead threads */
     lwpStatus(LwpCurrent, "Cleaning dead queue");
index 8795d0d2e10bfa6d7865388b71445c03f9986fbb..4f6350c691d947450a4b890aa0e40d3b073b9ce2 100644 (file)
@@ -89,6 +89,7 @@ void lwpReady(struct lwpProc *);
 void lwpReschedule(void);
 void lwpEntryPoint(void);
 void lwpInitSelect(struct lwpProc *);
+void lwpWakeupSleep(void);
 void lwpSelect(void *);
 void lwpInitSigWait(sigset_t *);
 void lwpSigWakeup(void);
index cb360eed0e4b2c10a9e219b2c45605725d48b675..ea187982755fcf6982fa640d1ff65271fb0fd56c 100644 (file)
@@ -123,7 +123,7 @@ lwpWakeupFd(struct lwpProc *proc)
     lwpReady(proc);
 }
 
-static void
+void
 lwpWakeupSleep(void)
 {
     time_t now;