vserver 1.9.5.x5
[linux-2.6.git] / arch / ia64 / oprofile / init.c
index 558561d..125a602 100644 (file)
 #include <linux/init.h>
 #include <linux/errno.h>
  
-extern void timer_init(struct oprofile_operations ** ops);
+extern int perfmon_init(struct oprofile_operations * ops);
+extern void perfmon_exit(void);
+extern void ia64_backtrace(struct pt_regs * const regs, unsigned int depth);
 
-int __init oprofile_arch_init(struct oprofile_operations ** ops)
+int __init oprofile_arch_init(struct oprofile_operations * ops)
 {
-       return -ENODEV;
+       int ret = -ENODEV;
+
+#ifdef CONFIG_PERFMON
+       /* perfmon_init() can fail, but we have no way to report it */
+       ret = perfmon_init(ops);
+#endif
+       ops->backtrace = ia64_backtrace;
+
+       return ret;
 }
 
 
 void oprofile_arch_exit(void)
 {
+#ifdef CONFIG_PERFMON
+       perfmon_exit();
+#endif
 }