X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Foprofile%2Ftimer_int.c;h=710a45f0d734430871c21a8731108c483e07f2c5;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=5f031890859927f9673e3dbddad4fe67f0100db3;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/oprofile/timer_int.c b/drivers/oprofile/timer_int.c index 5f0318908..710a45f0d 100644 --- a/drivers/oprofile/timer_int.c +++ b/drivers/oprofile/timer_int.c @@ -14,44 +14,33 @@ #include #include #include - -static int timer_notify(struct notifier_block * self, unsigned long val, void * data) + +#include "oprof.h" + +static int timer_notify(struct pt_regs *regs) { - struct pt_regs * regs = (struct pt_regs *)data; - int cpu = smp_processor_id(); - unsigned long eip = profile_pc(regs); - - oprofile_add_sample(eip, !user_mode(regs), 0, cpu); + oprofile_add_sample(regs, 0); return 0; } - - -static struct notifier_block timer_notifier = { - .notifier_call = timer_notify, -}; - static int timer_start(void) { - return register_profile_notifier(&timer_notifier); + return register_timer_hook(timer_notify); } static void timer_stop(void) { - unregister_profile_notifier(&timer_notifier); + unregister_timer_hook(timer_notify); } -static struct oprofile_operations timer_ops = { - .start = timer_start, - .stop = timer_stop, - .cpu_type = "timer" -}; - - -void __init timer_init(struct oprofile_operations ** ops) +void __init oprofile_timer_init(struct oprofile_operations * ops) { - *ops = &timer_ops; - printk(KERN_INFO "oprofile: using timer interrupt.\n"); + ops->create_files = NULL; + ops->setup = NULL; + ops->shutdown = NULL; + ops->start = timer_start; + ops->stop = timer_stop; + ops->cpu_type = "timer"; }