]> Zhao Yanbai Git Server - minix.git/commitdiff
Fix for SPROFILE == 0
authorTomas Hruby <thruby@few.vu.nl>
Wed, 25 May 2011 07:42:11 +0000 (09:42 +0200)
committerTomas Hruby <thruby@few.vu.nl>
Wed, 25 May 2011 07:42:11 +0000 (09:42 +0200)
- contributed by Antoine Leca

kernel/arch/i386/arch_clock.c
kernel/proc.c
kernel/watchdog.c

index 34faee56aadbe944a973af6afd9e650a553aae35..235a9336c4b687df02ee79710ef0095a2f04b336 100644 (file)
@@ -288,9 +288,10 @@ PUBLIC void context_stop_idle(void)
 
        if (is_idle)
                restart_local_timer();
-
+#if SPROFILE
        if (sprofiling)
                get_cpulocal_var(idle_interrupted) = 1;
+#endif
 }
 
 PUBLIC u64_t ms_2_cpu_time(unsigned ms)
index f14b518efe34b64d29c96fa25a80d6494a8d200f..015150afc09050666a03087112b8c06942ebbc8b 100644 (file)
@@ -222,6 +222,9 @@ PRIVATE void idle(void)
 
        /* start accounting for the idle time */
        context_stop(proc_addr(KERNEL));
+#if !SPROFILE
+       halt_cpu();
+#else
        if (!sprofiling)
                halt_cpu();
        else {
@@ -234,6 +237,7 @@ PRIVATE void idle(void)
                interrupts_disable();
                *v = 0;
        }
+#endif
        /*
         * end of accounting for the idle task does not happen here, the kernel
         * is handling stuff for quite a while before it gets back here!
index 739aa3e5d3536bf86e91839c094403b0d8848d52..763435108dc46b2080689f05d6a325d925955b42 100644 (file)
@@ -52,6 +52,7 @@ PRIVATE void lockup_check(struct nmi_frame * frame)
 
 PUBLIC void nmi_watchdog_handler(struct nmi_frame * frame)
 {
+#if SPROFILE
        /*
         * Do not check for lockups while profiling, it is extremely likely that
         * a false positive is detected if the frequency is high
@@ -63,6 +64,13 @@ PUBLIC void nmi_watchdog_handler(struct nmi_frame * frame)
        
        if ((watchdog_enabled || sprofiling) && watchdog->reinit)
                watchdog->reinit(cpuid);
+#else
+       if (watchdog_enabled) {
+               lockup_check(frame);
+               if (watchdog->reinit)
+                       watchdog->reinit(cpuid);
+       }
+#endif
 }
 
 int nmi_watchdog_start_profiling(const unsigned freq)