cpumask: modifiy oprofile initialization
authorRobert Richter <robert.richter@amd.com>
Thu, 22 Jan 2009 13:14:14 +0000 (14:14 +0100)
committerIngo Molnar <mingo@elte.hu>
Thu, 22 Jan 2009 13:37:06 +0000 (14:37 +0100)
Delta patch to f7df8ed164996cd2c6aca9674388be6ef78d8b37 for
tip/cpus4096.

Moved initialization to sync_start()/sync_stop(). No changes needed in
buffer_sync.h and oprof.c anymore.

Signed-off-by: Robert Richter <robert.richter@amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
drivers/oprofile/buffer_sync.c
drivers/oprofile/buffer_sync.h
drivers/oprofile/oprof.c

index c3ea5fa..8574622 100644 (file)
@@ -154,6 +154,10 @@ int sync_start(void)
 {
        int err;
 
+       if (!alloc_cpumask_var(&marked_cpus, GFP_KERNEL))
+               return -ENOMEM;
+       cpumask_clear(marked_cpus);
+
        start_cpu_work();
 
        err = task_handoff_register(&task_free_nb);
@@ -179,6 +183,7 @@ out2:
        task_handoff_unregister(&task_free_nb);
 out1:
        end_sync();
+       free_cpumask_var(marked_cpus);
        goto out;
 }
 
@@ -190,6 +195,7 @@ void sync_stop(void)
        profile_event_unregister(PROFILE_TASK_EXIT, &task_exit_nb);
        task_handoff_unregister(&task_free_nb);
        end_sync();
+       free_cpumask_var(marked_cpus);
 }
 
 
@@ -565,20 +571,6 @@ void sync_buffer(int cpu)
        mutex_unlock(&buffer_mutex);
 }
 
-int __init buffer_sync_init(void)
-{
-       if (!alloc_cpumask_var(&marked_cpus, GFP_KERNEL))
-               return -ENOMEM;
-
-       cpumask_clear(marked_cpus);
-               return 0;
-}
-
-void __exit buffer_sync_cleanup(void)
-{
-       free_cpumask_var(marked_cpus);
-}
-
 /* The function can be used to add a buffer worth of data directly to
  * the kernel buffer. The buffer is assumed to be a circular buffer.
  * Take the entries from index start and end at index end, wrapping
index 0ebf5db..3110732 100644 (file)
@@ -19,8 +19,4 @@ void sync_stop(void);
 /* sync the given CPU's buffer */
 void sync_buffer(int cpu);
 
-/* initialize/destroy the buffer system. */
-int buffer_sync_init(void);
-void buffer_sync_cleanup(void);
-
 #endif /* OPROFILE_BUFFER_SYNC_H */
index ced39f6..3cffce9 100644 (file)
@@ -183,10 +183,6 @@ static int __init oprofile_init(void)
 {
        int err;
 
-       err = buffer_sync_init();
-       if (err)
-               return err;
-
        err = oprofile_arch_init(&oprofile_ops);
 
        if (err < 0 || timer) {
@@ -195,10 +191,8 @@ static int __init oprofile_init(void)
        }
 
        err = oprofilefs_register();
-       if (err) {
+       if (err)
                oprofile_arch_exit();
-               buffer_sync_cleanup();
-       }
 
        return err;
 }
@@ -208,7 +202,6 @@ static void __exit oprofile_exit(void)
 {
        oprofilefs_unregister();
        oprofile_arch_exit();
-       buffer_sync_cleanup();
 }