.. | .. |
---|
29 | 29 | static DECLARE_COMPLETION(read_start); |
---|
30 | 30 | static DECLARE_COMPLETION(read_done); |
---|
31 | 31 | |
---|
32 | | -static struct ring_buffer *buffer; |
---|
| 32 | +static struct trace_buffer *buffer; |
---|
33 | 33 | static struct task_struct *producer; |
---|
34 | 34 | static struct task_struct *consumer; |
---|
35 | 35 | static unsigned long read; |
---|
.. | .. |
---|
45 | 45 | static int producer_nice = MAX_NICE; |
---|
46 | 46 | static int consumer_nice = MAX_NICE; |
---|
47 | 47 | |
---|
48 | | -static int producer_fifo = -1; |
---|
49 | | -static int consumer_fifo = -1; |
---|
| 48 | +static int producer_fifo; |
---|
| 49 | +static int consumer_fifo; |
---|
50 | 50 | |
---|
51 | 51 | module_param(producer_nice, int, 0644); |
---|
52 | 52 | MODULE_PARM_DESC(producer_nice, "nice prio for producer"); |
---|
.. | .. |
---|
55 | 55 | MODULE_PARM_DESC(consumer_nice, "nice prio for consumer"); |
---|
56 | 56 | |
---|
57 | 57 | module_param(producer_fifo, int, 0644); |
---|
58 | | -MODULE_PARM_DESC(producer_fifo, "fifo prio for producer"); |
---|
| 58 | +MODULE_PARM_DESC(producer_fifo, "use fifo for producer: 0 - disabled, 1 - low prio, 2 - fifo"); |
---|
59 | 59 | |
---|
60 | 60 | module_param(consumer_fifo, int, 0644); |
---|
61 | | -MODULE_PARM_DESC(consumer_fifo, "fifo prio for consumer"); |
---|
| 61 | +MODULE_PARM_DESC(consumer_fifo, "use fifo for consumer: 0 - disabled, 1 - low prio, 2 - fifo"); |
---|
62 | 62 | |
---|
63 | 63 | static int read_events; |
---|
64 | 64 | |
---|
.. | .. |
---|
267 | 267 | if (consumer && !(cnt % wakeup_interval)) |
---|
268 | 268 | wake_up_process(consumer); |
---|
269 | 269 | |
---|
270 | | -#ifndef CONFIG_PREEMPT |
---|
| 270 | +#ifndef CONFIG_PREEMPTION |
---|
271 | 271 | /* |
---|
272 | | - * If we are a non preempt kernel, the 10 second run will |
---|
| 272 | + * If we are a non preempt kernel, the 10 seconds run will |
---|
273 | 273 | * stop everything while it runs. Instead, we will call |
---|
274 | 274 | * cond_resched and also add any time that was lost by a |
---|
275 | | - * rescedule. |
---|
| 275 | + * reschedule. |
---|
276 | 276 | * |
---|
277 | 277 | * Do a cond resched at the same frequency we would wake up |
---|
278 | 278 | * the reader. |
---|
.. | .. |
---|
303 | 303 | trace_printk("ERROR!\n"); |
---|
304 | 304 | |
---|
305 | 305 | if (!disable_reader) { |
---|
306 | | - if (consumer_fifo < 0) |
---|
| 306 | + if (consumer_fifo) |
---|
| 307 | + trace_printk("Running Consumer at SCHED_FIFO %s\n", |
---|
| 308 | + consumer_fifo == 1 ? "low" : "high"); |
---|
| 309 | + else |
---|
307 | 310 | trace_printk("Running Consumer at nice: %d\n", |
---|
308 | 311 | consumer_nice); |
---|
309 | | - else |
---|
310 | | - trace_printk("Running Consumer at SCHED_FIFO %d\n", |
---|
311 | | - consumer_fifo); |
---|
312 | 312 | } |
---|
313 | | - if (producer_fifo < 0) |
---|
| 313 | + if (producer_fifo) |
---|
| 314 | + trace_printk("Running Producer at SCHED_FIFO %s\n", |
---|
| 315 | + producer_fifo == 1 ? "low" : "high"); |
---|
| 316 | + else |
---|
314 | 317 | trace_printk("Running Producer at nice: %d\n", |
---|
315 | 318 | producer_nice); |
---|
316 | | - else |
---|
317 | | - trace_printk("Running Producer at SCHED_FIFO %d\n", |
---|
318 | | - producer_fifo); |
---|
319 | 319 | |
---|
320 | 320 | /* Let the user know that the test is running at low priority */ |
---|
321 | | - if (producer_fifo < 0 && consumer_fifo < 0 && |
---|
| 321 | + if (!producer_fifo && !consumer_fifo && |
---|
322 | 322 | producer_nice == MAX_NICE && consumer_nice == MAX_NICE) |
---|
323 | 323 | trace_printk("WARNING!!! This test is running at lowest priority.\n"); |
---|
324 | 324 | |
---|
.. | .. |
---|
362 | 362 | hit--; /* make it non zero */ |
---|
363 | 363 | } |
---|
364 | 364 | |
---|
365 | | - /* Caculate the average time in nanosecs */ |
---|
| 365 | + /* Calculate the average time in nanosecs */ |
---|
366 | 366 | avg = NSEC_PER_MSEC / (hit + missed); |
---|
367 | 367 | trace_printk("%ld ns per entry\n", avg); |
---|
368 | 368 | } |
---|
.. | .. |
---|
455 | 455 | * Run them as low-prio background tasks by default: |
---|
456 | 456 | */ |
---|
457 | 457 | if (!disable_reader) { |
---|
458 | | - if (consumer_fifo >= 0) { |
---|
459 | | - struct sched_param param = { |
---|
460 | | - .sched_priority = consumer_fifo |
---|
461 | | - }; |
---|
462 | | - sched_setscheduler(consumer, SCHED_FIFO, ¶m); |
---|
463 | | - } else |
---|
| 458 | + if (consumer_fifo >= 2) |
---|
| 459 | + sched_set_fifo(consumer); |
---|
| 460 | + else if (consumer_fifo == 1) |
---|
| 461 | + sched_set_fifo_low(consumer); |
---|
| 462 | + else |
---|
464 | 463 | set_user_nice(consumer, consumer_nice); |
---|
465 | 464 | } |
---|
466 | 465 | |
---|
467 | | - if (producer_fifo >= 0) { |
---|
468 | | - struct sched_param param = { |
---|
469 | | - .sched_priority = producer_fifo |
---|
470 | | - }; |
---|
471 | | - sched_setscheduler(producer, SCHED_FIFO, ¶m); |
---|
472 | | - } else |
---|
| 466 | + if (producer_fifo >= 2) |
---|
| 467 | + sched_set_fifo(producer); |
---|
| 468 | + else if (producer_fifo == 1) |
---|
| 469 | + sched_set_fifo_low(producer); |
---|
| 470 | + else |
---|
473 | 471 | set_user_nice(producer, producer_nice); |
---|
474 | 472 | |
---|
475 | 473 | return 0; |
---|