--- src/sys/kern/kern_synch.c 2006/05/29 03:57:20 1.63 +++ src/sys/kern/kern_synch.c 2006/07/11 01:01:50 1.64 @@ -441,7 +441,15 @@ tsleep(void *ident, int flags, const cha p->p_stat = SSLEEP; p->p_stats->p_ru.ru_nvcsw++; lwkt_switch(); + + /* + * And when we are woken up, put us back in SRUN. If we + * slept for over a second, recalculate our estcpu. + */ p->p_stat = SRUN; + if (p->p_slptime) + p->p_usched->recalculate(&p->p_lwp); + p->p_slptime = 0; } else { lwkt_switch(); }