aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;