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