static int __init oprofile_init(void) { int err; /* always init architecture to setup backtrace support */ err = oprofile_arch_init(&oprofile_ops); timer_mode = err || timer; /* fall back to timer mode on errors */ if (timer_mode) { if (!err) oprofile_arch_exit(); err = oprofile_timer_init(&oprofile_ops); if (err) return err; } err = oprofilefs_register(); if (!err) return 0; /* failed */ if (timer_mode) oprofile_timer_exit(); else oprofile_arch_exit(); return err; }
static void __exit oprofile_exit(void) { oprofilefs_unregister(); if (timer_mode) oprofile_timer_exit(); else oprofile_arch_exit(); }
static int __init oprofile_init(void) { int err; err = oprofile_arch_init(&oprofile_ops); if (err < 0 || timer) { printk(KERN_INFO "oprofile: using timer interrupt.\n"); oprofile_timer_init(&oprofile_ops); } err = oprofilefs_register(); if (err) oprofile_arch_exit(); return err; }
static void __exit oprofile_exit(void) { oprofile_timer_exit(); oprofilefs_unregister(); oprofile_arch_exit(); }