Ejemplo n.º 1
0
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);
}