X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Farch%2Fx86%2Fproc.c;h=281b628879b1b159013b2e1b4004cda194e8ebb7;hb=cb908a64349e1e4623cbfe2a160788332eb0ce80;hp=fb6b52dee852d89b6031605ffeeb26cb39273401;hpb=533eecb9c9c351c668c3a6b9d49f28325a914162;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/arch/x86/proc.c b/KernelLand/Kernel/arch/x86/proc.c index fb6b52de..281b6288 100644 --- a/KernelLand/Kernel/arch/x86/proc.c +++ b/KernelLand/Kernel/arch/x86/proc.c @@ -18,6 +18,7 @@ #define DEBUG_TRACE_SWITCH 0 #define DEBUG_DISABLE_DOUBLEFAULT 1 #define DEBUG_VERY_SLOW_PERIOD 0 +#define DEBUG_NOPREEMPT 1 // === CONSTANTS === // Base is 1193182 @@ -986,15 +987,18 @@ void Proc_Scheduler(int CPU) outb(0x20, 0x20); __asm__ __volatile__ ("sti"); - gaCPUs[CPU].LastTimerThread = gaCPUs[CPU].Current; // Call the timer update code Timer_CallTimers(); + #if !DEBUG_NOPREEMPT // If two ticks happen within the same task, and it's not an idle task, swap if( gaCPUs[CPU].Current->TID > giNumCPUs && gaCPUs[CPU].Current == gaCPUs[CPU].LastTimerThread ) { Proc_Reschedule(); } + + gaCPUs[CPU].LastTimerThread = gaCPUs[CPU].Current; + #endif } // === EXPORTS ===