diff options
Diffstat (limited to 'kernel/trace/ring_buffer_benchmark.c')
| -rw-r--r-- | kernel/trace/ring_buffer_benchmark.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/kernel/trace/ring_buffer_benchmark.c b/kernel/trace/ring_buffer_benchmark.c index 3f9e328c30b5..13d945c0d03f 100644 --- a/kernel/trace/ring_buffer_benchmark.c +++ b/kernel/trace/ring_buffer_benchmark.c | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | #include <linux/completion.h> | 7 | #include <linux/completion.h> |
| 8 | #include <linux/kthread.h> | 8 | #include <linux/kthread.h> |
| 9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
| 10 | #include <linux/time.h> | 10 | #include <linux/ktime.h> |
| 11 | #include <asm/local.h> | 11 | #include <asm/local.h> |
| 12 | 12 | ||
| 13 | struct rb_page { | 13 | struct rb_page { |
| @@ -17,7 +17,7 @@ struct rb_page { | |||
| 17 | }; | 17 | }; |
| 18 | 18 | ||
| 19 | /* run time and sleep time in seconds */ | 19 | /* run time and sleep time in seconds */ |
| 20 | #define RUN_TIME 10 | 20 | #define RUN_TIME 10ULL |
| 21 | #define SLEEP_TIME 10 | 21 | #define SLEEP_TIME 10 |
| 22 | 22 | ||
| 23 | /* number of events for writer to wake up the reader */ | 23 | /* number of events for writer to wake up the reader */ |
| @@ -212,8 +212,7 @@ static void ring_buffer_consumer(void) | |||
| 212 | 212 | ||
| 213 | static void ring_buffer_producer(void) | 213 | static void ring_buffer_producer(void) |
| 214 | { | 214 | { |
| 215 | struct timeval start_tv; | 215 | ktime_t start_time, end_time, timeout; |
| 216 | struct timeval end_tv; | ||
| 217 | unsigned long long time; | 216 | unsigned long long time; |
| 218 | unsigned long long entries; | 217 | unsigned long long entries; |
| 219 | unsigned long long overruns; | 218 | unsigned long long overruns; |
| @@ -227,7 +226,8 @@ static void ring_buffer_producer(void) | |||
| 227 | * make the system stall) | 226 | * make the system stall) |
| 228 | */ | 227 | */ |
| 229 | trace_printk("Starting ring buffer hammer\n"); | 228 | trace_printk("Starting ring buffer hammer\n"); |
| 230 | do_gettimeofday(&start_tv); | 229 | start_time = ktime_get(); |
| 230 | timeout = ktime_add_ns(start_time, RUN_TIME * NSEC_PER_SEC); | ||
| 231 | do { | 231 | do { |
| 232 | struct ring_buffer_event *event; | 232 | struct ring_buffer_event *event; |
| 233 | int *entry; | 233 | int *entry; |
| @@ -244,7 +244,7 @@ static void ring_buffer_producer(void) | |||
| 244 | ring_buffer_unlock_commit(buffer, event); | 244 | ring_buffer_unlock_commit(buffer, event); |
| 245 | } | 245 | } |
| 246 | } | 246 | } |
| 247 | do_gettimeofday(&end_tv); | 247 | end_time = ktime_get(); |
| 248 | 248 | ||
| 249 | cnt++; | 249 | cnt++; |
| 250 | if (consumer && !(cnt % wakeup_interval)) | 250 | if (consumer && !(cnt % wakeup_interval)) |
| @@ -264,7 +264,7 @@ static void ring_buffer_producer(void) | |||
| 264 | cond_resched(); | 264 | cond_resched(); |
| 265 | #endif | 265 | #endif |
| 266 | 266 | ||
| 267 | } while (end_tv.tv_sec < (start_tv.tv_sec + RUN_TIME) && !kill_test); | 267 | } while (ktime_before(end_time, timeout) && !kill_test); |
| 268 | trace_printk("End ring buffer hammer\n"); | 268 | trace_printk("End ring buffer hammer\n"); |
| 269 | 269 | ||
| 270 | if (consumer) { | 270 | if (consumer) { |
| @@ -280,9 +280,7 @@ static void ring_buffer_producer(void) | |||
| 280 | wait_for_completion(&read_done); | 280 | wait_for_completion(&read_done); |
| 281 | } | 281 | } |
| 282 | 282 | ||
| 283 | time = end_tv.tv_sec - start_tv.tv_sec; | 283 | time = ktime_us_delta(end_time, start_time); |
| 284 | time *= USEC_PER_SEC; | ||
| 285 | time += (long long)((long)end_tv.tv_usec - (long)start_tv.tv_usec); | ||
| 286 | 284 | ||
| 287 | entries = ring_buffer_entries(buffer); | 285 | entries = ring_buffer_entries(buffer); |
| 288 | overruns = ring_buffer_overruns(buffer); | 286 | overruns = ring_buffer_overruns(buffer); |
