LWP failed to wake up threads sleeping in empth_sleep() while other

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.
This commit is contained in:
Markus Armbruster 2007-07-20 18:12:03 +00:00
parent 228a545ff3
commit d4150cc2ee
3 changed files with 3 additions and 1 deletions

View file

@ -76,6 +76,7 @@ lwpReschedule(void)
} }
lwpSigWakeup(); lwpSigWakeup();
lwpWakeupSleep();
/* destroy dead threads */ /* destroy dead threads */
lwpStatus(LwpCurrent, "Cleaning dead queue"); lwpStatus(LwpCurrent, "Cleaning dead queue");

View file

@ -89,6 +89,7 @@ void lwpReady(struct lwpProc *);
void lwpReschedule(void); void lwpReschedule(void);
void lwpEntryPoint(void); void lwpEntryPoint(void);
void lwpInitSelect(struct lwpProc *); void lwpInitSelect(struct lwpProc *);
void lwpWakeupSleep(void);
void lwpSelect(void *); void lwpSelect(void *);
void lwpInitSigWait(sigset_t *); void lwpInitSigWait(sigset_t *);
void lwpSigWakeup(void); void lwpSigWakeup(void);

View file

@ -123,7 +123,7 @@ lwpWakeupFd(struct lwpProc *proc)
lwpReady(proc); lwpReady(proc);
} }
static void void
lwpWakeupSleep(void) lwpWakeupSleep(void)
{ {
time_t now; time_t now;