{
struct thread *td = curthread;
struct pcb *pcb;
- npxexit();
+
pcb = td->td_pcb;
/* Some i386 functionality was dropped */
td->td_gd->gd_cnt.v_swtch++;
crit_enter_quick(td);
+ if (td->td_flags & TDF_TSLEEPQ)
+ tsleep_remove(td);
lwkt_deschedule_self(td);
lwkt_remove_tdallq(td);
cpu_thread_exit();
void
cpu_thread_exit(void)
{
+ npxexit();
curthread->td_switch = cpu_exit_switch;
curthread->td_flags |= TDF_EXITING;
lwkt_switch();
panic("cpu_thread_exit: lwkt_switch() unexpectedly returned");
}
-/*
- * Process Reaper. Called after the caller has acquired the thread's
- * rwlock and removed it from the reap list.
- */
-void
-cpu_proc_wait(struct proc *p)
-{
- /* drop per-process resources */
- pmap_dispose_proc(p);
-}
-
int
grow_stack(struct proc *p, u_long sp)
{