minix/kernel/arch/i386
Tomas Hruby 8451a86f0a Interrupts hadling while idle
- When the cpu halts, the interrupts are enable so the cpu may be
  woken up. When the interrupt handler returns but another interrupt
  is available it is also serviced immediately. This is not a problem
  per-se. It only slightly breaks time accounting as idle accounted is
  for the kernel time in the interrupt handler.
  
  
-  As the big kernel lock is lock/unlocked in the smp branch in the
   time acounting functions as they are called exactly at the places
   we need to take the lock) this leads to a deadlock.

- we make sure that once the interrupt handler returns from the nested
  trap, the interrupts are disabled. This means that only one
  interrupt is serviced after idle is interrupted.

- this requires the loop in apic timer calibration to keep reenabling
  the interrupts. I admit it is a little bit hackish (one line),
  however, this code is a stupid corner case at the boot time.
  Hopefully it does not matter too much.
2010-03-23 13:35:01 +00:00
..
include Move archtypes.h, fpu.h, and stackframe.h 2010-03-09 09:41:14 +00:00
apic.c Interrupts hadling while idle 2010-03-23 13:35:01 +00:00
apic.h Miscellaneous code cleanup. 2010-03-22 20:43:06 +00:00
apic_asm.h Local APIC 2009-11-16 21:41:44 +00:00
apic_asm.S Interrupts hadling while idle 2010-03-23 13:35:01 +00:00
arch_do_vmctl.c panic() cleanup. 2010-03-05 15:05:11 +00:00
breakpoints.c this patch adds access to the debug breakpoints to 2010-03-19 19:15:20 +00:00
clock.c Include directory reorg and makefile updates. 2010-03-08 11:04:59 +00:00
clock.h Removed unused symbols. 2010-01-25 18:13:48 +00:00
debugreg.h this patch adds access to the debug breakpoints to 2010-03-19 19:15:20 +00:00
debugreg.S this patch adds access to the debug breakpoints to 2010-03-19 19:15:20 +00:00
do_int86.c Include directory reorg and makefile updates. 2010-03-08 11:04:59 +00:00
do_iopenable.c This patch removes the global variables who_p and who_e from the 2010-02-03 09:04:48 +00:00
do_readbios.c This patch removes the global variables who_p and who_e from the 2010-02-03 09:04:48 +00:00
do_sdevio.c Miscellaneous code cleanup. 2010-03-22 20:43:06 +00:00
exception.c Miscellaneous code cleanup. 2010-03-22 20:43:06 +00:00
glo.h Local APIC 2009-11-16 21:41:44 +00:00
hw_intr.h Fixed some type inconsistencies in the kernel. 2010-01-26 12:26:06 +00:00
i8259.c Include directory reorg and makefile updates. 2010-03-08 11:04:59 +00:00
klib386.S Interrupts hadling while idle 2010-03-23 13:35:01 +00:00
Makefile this patch adds access to the debug breakpoints to 2010-03-19 19:15:20 +00:00
memory.c Miscellaneous code cleanup. 2010-03-22 20:43:06 +00:00
mpx386.S Interrupts hadling while idle 2010-03-23 13:35:01 +00:00
protect.c Move archtypes.h, fpu.h, and stackframe.h 2010-03-09 09:41:14 +00:00
proto.h this patch adds access to the debug breakpoints to 2010-03-19 19:15:20 +00:00
sconst.h Interrupts hadling while idle 2010-03-23 13:35:01 +00:00
system.c Move archtypes.h, fpu.h, and stackframe.h 2010-03-09 09:41:14 +00:00
watchdog.c panic() cleanup. 2010-03-05 15:05:11 +00:00
watchdog.h NMI watchdog is an awesome feature for debugging locked up kernels. 2010-01-16 20:53:55 +00:00