Next: Makra z rodziny wait_event
Up: Bezpośrednie wywoływanie schedule()
Previous: Przykład bezpośredniego wywołania schedule()
  Spis rzeczy
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);
...
}
- Funkcja sleep_on_interruptible różni się tylko tym, że
ustawia stan procesu na TASK_INTERRUPTIBLE
- Funkcja sleep_on_timeout. różnie się tylko tym, że
wywołuje funkcję schedule_timeout.
Ignacy Kowalczyk
2001-11-16