next up previous contents
Next: Funkcja reschedule_idle() Up: Rozszerzenie dla obsługi wielu Previous: Funkcja schedule()   Spis rzeczy

Funkcja __schedule_tail()

Funkcja ta w wersji SMP próbuje przydzielić dopiero co wywłaszczonemu procesowi jaki¶ inny procesor (uruchamiaj±c funkcję rechedule_idle()) o ile wywłaszczony proces nie był procesem typu idle i o ile dalej jest w stanie TASK_RUNNING oraz nie ma ustawionej flagi SCHED_YIELD.

if (prev->state == TASK_RUNNING) {
  if ((prev == idle_task(smp_processor_id())) ||
      (policy & SCHED_YIELD))
    goto out_unlock; /* Koniec
  spin_lock_irqsave(&runqueue_lock, flags);
  if ((prev->state == TASK_RUNNING) && !prev->has_cpu)
    reschedule_idle(prev);
  spin_unlock_irqrestore(&runqueue_lock, flags);
  ...
}



Ignacy Kowalczyk 2001-11-16