aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Richter <robert.richter@amd.com>2009-07-09 08:56:25 -0400
committerRobert Richter <robert.richter@amd.com>2009-07-20 10:43:21 -0400
commit1b294f5960cd89e49eeb3e797860c552b03f2272 (patch)
tree2582a7f6d56c2f34ff956d24eda97b18720aa0ce
parent4d015f79e972cea1761cfee8872b1c0992ccd8b2 (diff)
oprofile: Adding switch counter to oprofile statistic variables
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>
-rw-r--r--arch/x86/oprofile/nmi_int.c7
-rw-r--r--drivers/oprofile/oprof.c7
-rw-r--r--drivers/oprofile/oprofile_stats.c9
-rw-r--r--drivers/oprofile/oprofile_stats.h1
4 files changed, 8 insertions, 16 deletions
diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
index da6d2ab31c6c..7b3362f9abdb 100644
--- a/arch/x86/oprofile/nmi_int.c
+++ b/arch/x86/oprofile/nmi_int.c
@@ -34,11 +34,6 @@ static DEFINE_PER_CPU(unsigned long, saved_lvtpc);
34/* 0 == registered but off, 1 == registered and on */ 34/* 0 == registered but off, 1 == registered and on */
35static int nmi_enabled = 0; 35static int nmi_enabled = 0;
36 36
37
38#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
39extern atomic_t multiplex_counter;
40#endif
41
42struct op_counter_config counter_config[OP_MAX_COUNTER]; 37struct op_counter_config counter_config[OP_MAX_COUNTER];
43 38
44/* common functions */ 39/* common functions */
@@ -253,8 +248,6 @@ static int nmi_switch_event(void)
253 248
254 on_each_cpu(nmi_cpu_switch, NULL, 1); 249 on_each_cpu(nmi_cpu_switch, NULL, 1);
255 250
256 atomic_inc(&multiplex_counter);
257
258 return 0; 251 return 0;
259} 252}
260 253
diff --git a/drivers/oprofile/oprof.c b/drivers/oprofile/oprof.c
index a48294a8ebe8..dc8a0428260d 100644
--- a/drivers/oprofile/oprof.c
+++ b/drivers/oprofile/oprof.c
@@ -107,8 +107,11 @@ static void stop_switch_worker(void)
107 107
108static void switch_worker(struct work_struct *work) 108static void switch_worker(struct work_struct *work)
109{ 109{
110 if (!oprofile_ops.switch_events()) 110 if (oprofile_ops.switch_events())
111 start_switch_worker(); 111 return;
112
113 atomic_inc(&oprofile_stats.multiplex_counter);
114 start_switch_worker();
112} 115}
113 116
114/* User inputs in ms, converts to jiffies */ 117/* User inputs in ms, converts to jiffies */
diff --git a/drivers/oprofile/oprofile_stats.c b/drivers/oprofile/oprofile_stats.c
index 77a57a6792f6..61689e814d46 100644
--- a/drivers/oprofile/oprofile_stats.c
+++ b/drivers/oprofile/oprofile_stats.c
@@ -16,9 +16,6 @@
16#include "cpu_buffer.h" 16#include "cpu_buffer.h"
17 17
18struct oprofile_stat_struct oprofile_stats; 18struct oprofile_stat_struct oprofile_stats;
19#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
20atomic_t multiplex_counter;
21#endif
22 19
23void oprofile_reset_stats(void) 20void oprofile_reset_stats(void)
24{ 21{
@@ -37,9 +34,7 @@ void oprofile_reset_stats(void)
37 atomic_set(&oprofile_stats.sample_lost_no_mapping, 0); 34 atomic_set(&oprofile_stats.sample_lost_no_mapping, 0);
38 atomic_set(&oprofile_stats.event_lost_overflow, 0); 35 atomic_set(&oprofile_stats.event_lost_overflow, 0);
39 atomic_set(&oprofile_stats.bt_lost_no_mapping, 0); 36 atomic_set(&oprofile_stats.bt_lost_no_mapping, 0);
40#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX 37 atomic_set(&oprofile_stats.multiplex_counter, 0);
41 atomic_set(&multiplex_counter, 0);
42#endif
43} 38}
44 39
45 40
@@ -84,6 +79,6 @@ void oprofile_create_stats_files(struct super_block *sb, struct dentry *root)
84 &oprofile_stats.bt_lost_no_mapping); 79 &oprofile_stats.bt_lost_no_mapping);
85#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX 80#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
86 oprofilefs_create_ro_atomic(sb, dir, "multiplex_counter", 81 oprofilefs_create_ro_atomic(sb, dir, "multiplex_counter",
87 &multiplex_counter); 82 &oprofile_stats.multiplex_counter);
88#endif 83#endif
89} 84}
diff --git a/drivers/oprofile/oprofile_stats.h b/drivers/oprofile/oprofile_stats.h
index 3da0d08dc1f9..0b54e46c3c14 100644
--- a/drivers/oprofile/oprofile_stats.h
+++ b/drivers/oprofile/oprofile_stats.h
@@ -17,6 +17,7 @@ struct oprofile_stat_struct {
17 atomic_t sample_lost_no_mapping; 17 atomic_t sample_lost_no_mapping;
18 atomic_t bt_lost_no_mapping; 18 atomic_t bt_lost_no_mapping;
19 atomic_t event_lost_overflow; 19 atomic_t event_lost_overflow;
20 atomic_t multiplex_counter;
20}; 21};
21 22
22extern struct oprofile_stat_struct oprofile_stats; 23extern struct oprofile_stat_struct oprofile_stats;