Changeset View
Changeset View
Standalone View
Standalone View
head/sys/kern/kern_clock.c
Show First 20 Lines • Show All 206 Lines • ▼ Show 20 Lines | if (tticks > blkticks) | ||||
*/ | */ | ||||
panic("%s: possible deadlock detected for %p, " | panic("%s: possible deadlock detected for %p, " | ||||
"blocked for %d ticks\n", __func__, td, tticks); | "blocked for %d ticks\n", __func__, td, tticks); | ||||
} | } | ||||
static void | static void | ||||
deadlres_td_sleep_q(struct proc *p, struct thread *td, int slpticks) | deadlres_td_sleep_q(struct proc *p, struct thread *td, int slpticks) | ||||
{ | { | ||||
void *wchan; | const void *wchan; | ||||
int i, slptype, tticks; | int i, slptype, tticks; | ||||
sx_assert(&allproc_lock, SX_LOCKED); | sx_assert(&allproc_lock, SX_LOCKED); | ||||
PROC_LOCK_ASSERT(p, MA_OWNED); | PROC_LOCK_ASSERT(p, MA_OWNED); | ||||
THREAD_LOCK_ASSERT(td, MA_OWNED); | THREAD_LOCK_ASSERT(td, MA_OWNED); | ||||
/* | /* | ||||
* Check if the thread is sleeping on a lock, otherwise skip the check. | * Check if the thread is sleeping on a lock, otherwise skip the check. | ||||
* Drop the thread lock in order to avoid a LOR with the sleepqueue | * Drop the thread lock in order to avoid a LOR with the sleepqueue | ||||
▲ Show 20 Lines • Show All 608 Lines • Show Last 20 Lines |