Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_fork.c
Show First 20 Lines • Show All 800 Lines • ▼ Show 20 Lines | while (p2->p_flag & P_PPWAIT) { | ||||
if (thread_suspend_check_needed()) { | if (thread_suspend_check_needed()) { | ||||
PROC_UNLOCK(p2); | PROC_UNLOCK(p2); | ||||
thread_suspend_check(0); | thread_suspend_check(0); | ||||
PROC_UNLOCK(p); | PROC_UNLOCK(p); | ||||
goto again; | goto again; | ||||
} else { | } else { | ||||
PROC_UNLOCK(p); | PROC_UNLOCK(p); | ||||
} | } | ||||
cv_timedwait(&p2->p_pwait, &p2->p_mtx, hz); | cv_timedwait_flags(&p2->p_pwait, &p2->p_mtx, hz, C_USERWAIT); | ||||
} | } | ||||
PROC_UNLOCK(p2); | PROC_UNLOCK(p2); | ||||
if (td->td_dbgflags & TDB_VFORK) { | if (td->td_dbgflags & TDB_VFORK) { | ||||
PROC_LOCK(p); | PROC_LOCK(p); | ||||
if (p->p_ptevents & PTRACE_VFORK) | if (p->p_ptevents & PTRACE_VFORK) | ||||
ptracestop(td, SIGTRAP, NULL); | ptracestop(td, SIGTRAP, NULL); | ||||
td->td_dbgflags &= ~TDB_VFORK; | td->td_dbgflags &= ~TDB_VFORK; | ||||
▲ Show 20 Lines • Show All 318 Lines • Show Last 20 Lines |