int profile_event_register(enum profile_type, struct notifier_block * n);
int profile_event_unregister(enum profile_type, struct notifier_block * n);
-int register_timer_hook(int (*hook)(struct pt_regs *));
-void unregister_timer_hook(int (*hook)(struct pt_regs *));
-
-/* Timer based profiling hook */
-extern int (*timer_hook)(struct pt_regs *);
+int register_profile_notifier(struct notifier_block * nb);
+int unregister_profile_notifier(struct notifier_block * nb);
struct pt_regs;
+/* profiling hook activated on each timer interrupt */
+void profile_hook(struct pt_regs * regs);
+
#else
static inline int task_handoff_register(struct notifier_block * n)
#define profile_handoff_task(a) (0)
#define profile_munmap(a) do { } while (0)
-static inline int register_timer_hook(int (*hook)(struct pt_regs *))
+static inline int register_profile_notifier(struct notifier_block * nb)
{
return -ENOSYS;
}
-static inline void unregister_timer_hook(int (*hook)(struct pt_regs *))
+static inline int unregister_profile_notifier(struct notifier_block * nb)
{
- return;
+ return -ENOSYS;
}
+#define profile_hook(regs) do { } while (0)
+
#endif /* CONFIG_PROFILING */
#endif /* __KERNEL__ */