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:
parent
228a545ff3
commit
d4150cc2ee
3 changed files with 3 additions and 1 deletions
|
@ -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");
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue