static void probe_mt65xx_mon_tracepoint(void *ignore, struct task_struct *prev, struct task_struct *next) { struct trace_array_cpu *data; unsigned long flags; int cpu; int pc; if (unlikely(!mt65xx_mon_ref)) return; if (!mt65xx_mon_enabled || mt65xx_mon_stopped) return; if (prev) tracing_record_cmdline(prev); if (next) tracing_record_cmdline(next); tracing_record_cmdline(current); pc = preempt_count(); /* local_irq_save(flags); */ spin_lock_irqsave(&mt65xx_mon_spinlock, flags); cpu = raw_smp_processor_id(); #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) data = mt65xx_mon_trace->data[cpu]; #else data = per_cpu_ptr(mt65xx_mon_trace->trace_buffer.data, cpu); #endif if (likely(!atomic_read(&data->disabled))) tracing_mt65xx_mon_function(mt65xx_mon_trace, prev, next, flags, pc); spin_unlock_irqrestore(&mt65xx_mon_spinlock, flags); /* local_irq_restore(flags); */ }
static void probe_mt65xx_mon_tracepoint(void *ignore, struct task_struct *prev, struct task_struct *next) { struct trace_array_cpu *data; unsigned long flags; int cpu; int pc; if (unlikely(!mt65xx_mon_ref)) return; if (!mt65xx_mon_enabled || mt65xx_mon_stopped) return; if (prev) tracing_record_cmdline(prev); if (next) tracing_record_cmdline(next); tracing_record_cmdline(current); pc = preempt_count(); //local_irq_save(flags); spin_lock_irqsave(&mt65xx_mon_spinlock, flags); cpu = raw_smp_processor_id(); data = mt65xx_mon_trace->data[cpu]; if (likely(!atomic_read(&data->disabled))) tracing_mt65xx_mon_function(mt65xx_mon_trace, prev, next, flags, pc); spin_unlock_irqrestore(&mt65xx_mon_spinlock, flags); //local_irq_restore(flags); }