]> Zhao Yanbai Git Server - minix.git/commit
Idle task never runs
authorTomas Hruby <tom@minix3.org>
Thu, 12 Nov 2009 08:42:18 +0000 (08:42 +0000)
committerTomas Hruby <tom@minix3.org>
Thu, 12 Nov 2009 08:42:18 +0000 (08:42 +0000)
commitad4dcaab7107e4a6ab9ad9340d37726a0e5c3d85
tree6b8aa1ba49f708682fb4d68ee3601bd651bb3282
parent37a7e1b76baf5a83086a812f54612a7e4a51b8e4
Idle task never runs

- idle task becomes a pseudo task which is never scheduled. It is never put on
  any run queue and never enters userspace. An entry for this task still remains
  in the process table for time accounting

- Instead of panicing if there is not process to schedule, pick_proc() returns
  NULL which is a signal to put the cpu in an idle state and set everything in
  such a way that after receiving and interrupt it looks like idle task was
  preempted

- idle task is set non-preemptible to avoid handling in the timer interrupt code
  which make userspace scheduling simpler as idle task does not need to be
  handled as a special case.
kernel/arch/i386/klib386.S
kernel/main.c
kernel/proc.c
kernel/proto.h
kernel/table.c