W pliku kernel/sched.c są zdefiniowane funkcje sleep_on, sleep_on_interruptible i sleep_on_timeout.
Oto kod funkcji sleep_on:
void sleep_on(wait_queue_head_t *q)
{
wait_queue_t wait;
init_waitqueue_entry(&wait, current);
...
__add_wait_queue(q, &wait);
...
current->state = TASK_UNINTERRUPTIBLE;
schedule();
...
__remove_wait_queue(q, &wait);
...
}