aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/ring_buffer_benchmark.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/trace/ring_buffer_benchmark.c')
-rw-r--r--kernel/trace/ring_buffer_benchmark.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/kernel/trace/ring_buffer_benchmark.c b/kernel/trace/ring_buffer_benchmark.c
index 573d3cc762c3..70df73e4ff21 100644
--- a/kernel/trace/ring_buffer_benchmark.c
+++ b/kernel/trace/ring_buffer_benchmark.c
@@ -35,6 +35,10 @@ static int disable_reader;
35module_param(disable_reader, uint, 0644); 35module_param(disable_reader, uint, 0644);
36MODULE_PARM_DESC(disable_reader, "only run producer"); 36MODULE_PARM_DESC(disable_reader, "only run producer");
37 37
38static int write_iteration = 50;
39module_param(write_iteration, uint, 0644);
40MODULE_PARM_DESC(write_iteration, "# of writes between timestamp readings");
41
38static int read_events; 42static int read_events;
39 43
40static int kill_test; 44static int kill_test;
@@ -208,15 +212,18 @@ static void ring_buffer_producer(void)
208 do { 212 do {
209 struct ring_buffer_event *event; 213 struct ring_buffer_event *event;
210 int *entry; 214 int *entry;
211 215 int i;
212 event = ring_buffer_lock_reserve(buffer, 10); 216
213 if (!event) { 217 for (i = 0; i < write_iteration; i++) {
214 missed++; 218 event = ring_buffer_lock_reserve(buffer, 10);
215 } else { 219 if (!event) {
216 hit++; 220 missed++;
217 entry = ring_buffer_event_data(event); 221 } else {
218 *entry = smp_processor_id(); 222 hit++;
219 ring_buffer_unlock_commit(buffer, event); 223 entry = ring_buffer_event_data(event);
224 *entry = smp_processor_id();
225 ring_buffer_unlock_commit(buffer, event);
226 }
220 } 227 }
221 do_gettimeofday(&end_tv); 228 do_gettimeofday(&end_tv);
222 229