oprofile: Remove exit function for timer mode
authorRobert Richter <robert.richter@amd.com>
Fri, 14 Oct 2011 13:46:10 +0000 (15:46 +0200)
committerRobert Richter <robert.richter@amd.com>
Fri, 4 Nov 2011 14:04:35 +0000 (15:04 +0100)
Remove exit functions by moving init/exit code to oprofile's setup/
shutdown functions. Doing so the oprofile module exit code will be
easier and less error-prone.

Signed-off-by: Robert Richter <robert.richter@amd.com>
drivers/oprofile/oprof.c
drivers/oprofile/timer_int.c

index f8c752e..f7cd069 100644 (file)
@@ -262,9 +262,7 @@ static int __init oprofile_init(void)
                return 0;
 
        /* failed */
-       if (timer_mode)
-               oprofile_timer_exit();
-       else
+       if (!timer_mode)
                oprofile_arch_exit();
 
        return err;
@@ -274,9 +272,7 @@ static int __init oprofile_init(void)
 static void __exit oprofile_exit(void)
 {
        oprofilefs_unregister();
-       if (timer_mode)
-               oprofile_timer_exit();
-       else
+       if (!timer_mode)
                oprofile_arch_exit();
 }
 
index 878fba1..93404f7 100644 (file)
@@ -97,24 +97,24 @@ static struct notifier_block __refdata oprofile_cpu_notifier = {
        .notifier_call = oprofile_cpu_notify,
 };
 
-int oprofile_timer_init(struct oprofile_operations *ops)
+static int oprofile_hrtimer_setup(void)
 {
-       int rc;
-
-       rc = register_hotcpu_notifier(&oprofile_cpu_notifier);
-       if (rc)
-               return rc;
-       ops->create_files = NULL;
-       ops->setup = NULL;
-       ops->shutdown = NULL;
-       ops->start = oprofile_hrtimer_start;
-       ops->stop = oprofile_hrtimer_stop;
-       ops->cpu_type = "timer";
-       printk(KERN_INFO "oprofile: using timer interrupt.\n");
-       return 0;
+       return register_hotcpu_notifier(&oprofile_cpu_notifier);
 }
 
-void oprofile_timer_exit(void)
+static void oprofile_hrtimer_shutdown(void)
 {
        unregister_hotcpu_notifier(&oprofile_cpu_notifier);
 }
+
+int oprofile_timer_init(struct oprofile_operations *ops)
+{
+       ops->create_files       = NULL;
+       ops->setup              = oprofile_hrtimer_setup;
+       ops->shutdown           = oprofile_hrtimer_shutdown;
+       ops->start              = oprofile_hrtimer_start;
+       ops->stop               = oprofile_hrtimer_stop;
+       ops->cpu_type           = "timer";
+       printk(KERN_INFO "oprofile: using timer interrupt.\n");
+       return 0;
+}