minix/kernel
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
..
arch/i386 Interrupts hadling while idle 2010-03-23 13:35:01 +00:00
system atomicity fix when enabling paging 2010-03-22 07:42:52 +00:00
clock.c Remove some unused #include. 2010-02-17 20:24:42 +00:00
clock.h Clock task split 2009-11-06 09:04:15 +00:00
config.h New RS and new signal handling for system processes. 2010-03-17 01:15:29 +00:00
const.h Time accounting based on TSC 2010-02-10 15:36:54 +00:00
debug.c re-establish kernel assert()s. 2010-03-10 13:00:05 +00:00
debug.h re-establish kernel assert()s. 2010-03-10 13:00:05 +00:00
glo.h Move archtypes.h, fpu.h, and stackframe.h 2010-03-09 09:41:14 +00:00
interrupt.c only print 1 every 1000 spurious interrupts (per interrupt). 2010-03-22 13:55:51 +00:00
ipc.h IPC status code for receive(). 2010-03-23 00:09:11 +00:00
kernel.h Time accounting based on TSC 2010-02-10 15:36:54 +00:00
main.c New RS and new signal handling for system processes. 2010-03-17 01:15:29 +00:00
Makefile Incorporate bsdmake into buildsystem and reorganize libs 2010-02-16 14:41:33 +00:00
priv.h New RS and new signal handling for system processes. 2010-03-17 01:15:29 +00:00
proc.c IPC status code for receive(). 2010-03-23 00:09:11 +00:00
proc.h New RS and new signal handling for system processes. 2010-03-17 01:15:29 +00:00
profile.c Removal of the system task 2010-02-09 15:20:09 +00:00
profile.h cprofile not conditional 2009-01-09 21:44:52 +00:00
proto.h atomicity fix when enabling paging 2010-03-22 07:42:52 +00:00
start.c use the verbose=2 boot monitor setting to get extensive output for debugging 2010-02-13 22:11:16 +00:00
system.c Miscellaneous code cleanup. 2010-03-22 20:43:06 +00:00
system.h New RS and new signal handling for system processes. 2010-03-17 01:15:29 +00:00
table.c Prioritized NOTIFY messages for reliable asynchonrous delivery of system events. 2010-03-22 23:44:55 +00:00
type.h Miscellaneous code cleanup. 2010-03-22 20:43:06 +00:00
utility.c panic() cleanup. 2010-03-05 15:05:11 +00:00
vm.h intr_disabled() tests removed 2010-02-09 15:29:58 +00:00
watchdog.c no more kprintf - kernel uses libsys printf now, only kputc is special 2010-03-03 15:45:01 +00:00
watchdog.h NMI watchdog is an awesome feature for debugging locked up kernels. 2010-01-16 20:53:55 +00:00