]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
oprofile: Adding switch counter to oprofile statistic variables
authorRobert Richter <robert.richter@amd.com>
Thu, 9 Jul 2009 12:56:25 +0000 (14:56 +0200)
committerRobert Richter <robert.richter@amd.com>
Mon, 20 Jul 2009 14:43:21 +0000 (16:43 +0200)
This patch moves the multiplexing switch counter from x86 code to
common oprofile statistic variables. Now the value will be available
and usable for all architectures. The initialization and
incrementation also moved to common code.

Signed-off-by: Robert Richter <robert.richter@amd.com>
arch/x86/oprofile/nmi_int.c
drivers/oprofile/oprof.c
drivers/oprofile/oprofile_stats.c
drivers/oprofile/oprofile_stats.h

index da6d2ab31c6c3e19dce2484f38e35636b346e6a5..7b3362f9abdb6aeb0c6e073ab79630ade015f28d 100644 (file)
@@ -34,11 +34,6 @@ static DEFINE_PER_CPU(unsigned long, saved_lvtpc);
 /* 0 == registered but off, 1 == registered and on */
 static int nmi_enabled = 0;
 
-
-#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
-extern atomic_t multiplex_counter;
-#endif
-
 struct op_counter_config counter_config[OP_MAX_COUNTER];
 
 /* common functions */
@@ -253,8 +248,6 @@ static int nmi_switch_event(void)
 
        on_each_cpu(nmi_cpu_switch, NULL, 1);
 
-       atomic_inc(&multiplex_counter);
-
        return 0;
 }
 
index a48294a8ebe837bf1804c5958a699f20f5b6e28a..dc8a0428260dd3d5c141982d0da9dcdaceca70f7 100644 (file)
@@ -107,8 +107,11 @@ static void stop_switch_worker(void)
 
 static void switch_worker(struct work_struct *work)
 {
-       if (!oprofile_ops.switch_events())
-               start_switch_worker();
+       if (oprofile_ops.switch_events())
+               return;
+
+       atomic_inc(&oprofile_stats.multiplex_counter);
+       start_switch_worker();
 }
 
 /* User inputs in ms, converts to jiffies */
index 77a57a6792f61994826580a2ed151ba50f96dc58..61689e814d465fc90bb0652d0c5cec9380e185f5 100644 (file)
@@ -16,9 +16,6 @@
 #include "cpu_buffer.h"
 
 struct oprofile_stat_struct oprofile_stats;
-#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
-atomic_t multiplex_counter;
-#endif
 
 void oprofile_reset_stats(void)
 {
@@ -37,9 +34,7 @@ void oprofile_reset_stats(void)
        atomic_set(&oprofile_stats.sample_lost_no_mapping, 0);
        atomic_set(&oprofile_stats.event_lost_overflow, 0);
        atomic_set(&oprofile_stats.bt_lost_no_mapping, 0);
-#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
-       atomic_set(&multiplex_counter, 0);
-#endif
+       atomic_set(&oprofile_stats.multiplex_counter, 0);
 }
 
 
@@ -84,6 +79,6 @@ void oprofile_create_stats_files(struct super_block *sb, struct dentry *root)
                &oprofile_stats.bt_lost_no_mapping);
 #ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
        oprofilefs_create_ro_atomic(sb, dir, "multiplex_counter",
-               &multiplex_counter);
+               &oprofile_stats.multiplex_counter);
 #endif
 }
index 3da0d08dc1f980416867b0c25e1ef604e3430ca5..0b54e46c3c1413a8453f473f211c7cb010ac0851 100644 (file)
@@ -17,6 +17,7 @@ struct oprofile_stat_struct {
        atomic_t sample_lost_no_mapping;
        atomic_t bt_lost_no_mapping;
        atomic_t event_lost_overflow;
+       atomic_t multiplex_counter;
 };
 
 extern struct oprofile_stat_struct oprofile_stats;