void profile_tick(int type, struct pt_regs *regs) { if (type == CPU_PROFILING && timer_hook) timer_hook(regs); if (!user_mode(regs) && cpu_isset(smp_processor_id(), prof_cpu_mask)) profile_hit(type, (void *)profile_pc(regs)); }
void profile_tick(int type) { struct pt_regs *regs = get_irq_regs(); if (!user_mode(regs) && prof_cpu_mask != NULL && cpumask_test_cpu(smp_processor_id(), prof_cpu_mask)) profile_hit(type, (void *)profile_pc(regs)); }
void notrace profile_tick(int type, struct pt_regs *regs) { if (type == CPU_PROFILING && timer_hook) timer_hook(regs); if (!user_mode(regs) && (prof_pid == -1 || prof_pid == current->pid) && cpu_isset(smp_processor_id(), prof_cpu_mask)) { if (prof_on == PREEMPT_PROFILING && type == CPU_PROFILING) { #ifdef CONFIG_PREEMPT int count = preempt_count() - HARDIRQ_OFFSET; if (!count) profile_hit(PREEMPT_PROFILING, (void *)preemption_enabled); else #endif profile_hit(PREEMPT_PROFILING, (void *)preemption_disabled); } else profile_hit(type, (void *)profile_pc(regs)); } }