Move atomic_set(&tr->underrun, 0) and atomic_set(&tr->overrun, 0)
occurrences into reset_trace_idx().
Note this leads to under/overrun being reset more often than before:
        - in the trace_all_cpus case.
        - from under check_critical_timing()

Signed-off-by: Karsten Wiese <[EMAIL PROTECTED]>


--- rt6-kw/kernel/latency_trace-tk2.2.c 2006-12-06 14:58:44.000000000 +0100
+++ rt6-kw/kernel/latency_trace.c       2006-12-06 15:37:08.000000000 +0100
@@ -1695,10 +1695,17 @@ __setup("preempt_thresh=", setup_preempt
 static inline void notrace reset_trace_idx(int cpu, struct cpu_trace *tr)
 {
        if (trace_all_cpus)
-               for_each_online_cpu(cpu)
-                       cpu_traces[cpu].trace_idx = 0;
-       else
+               for_each_online_cpu(cpu) {
+                       tr = cpu_traces + cpu;
+                       tr->trace_idx = 0;
+                       atomic_set(&tr->underrun, 0);
+                       atomic_set(&tr->overrun, 0);
+               }
+       else{
                tr->trace_idx = 0;
+               atomic_set(&tr->underrun, 0);
+               atomic_set(&tr->overrun, 0);
+       }
 }
 
 #ifdef CONFIG_CRITICAL_TIMING
@@ -1842,8 +1849,6 @@ __start_critical_timing(unsigned long ei
        tr->critical_sequence = max_sequence;
        tr->preempt_timestamp = get_monotonic_cycles();
        tr->critical_start = eip;
-       atomic_set(&tr->underrun, 0);
-       atomic_set(&tr->overrun, 0);
        reset_trace_idx(cpu, tr);
        tr->latency_type = latency_type;
        _trace_cmdline(cpu, tr);
@@ -2221,8 +2226,6 @@ void __trace_start_sched_wakeup(struct t
                tr->preempt_timestamp = get_monotonic_cycles();
                tr->latency_type = WAKEUP_LATENCY;
                tr->critical_start = CALLER_ADDR0;
-               atomic_set(&tr->underrun, 0);
-               atomic_set(&tr->overrun, 0);
                _trace_cmdline(raw_smp_processor_id(), tr);
                atomic_dec(&tr->disabled);
 //     }
@@ -2332,8 +2335,6 @@ long user_trace_start(void)
        tr->critical_sequence = max_sequence;
        tr->preempt_timestamp = get_monotonic_cycles();
        tr->critical_start = CALLER_ADDR0;
-       atomic_set(&tr->underrun, 0);
-       atomic_set(&tr->overrun, 0);
        _trace_cmdline(cpu, tr);
        mcount();
 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to