Messages in this thread Patch in this message | | | From | Petr Mladek <> | Subject | [RFC PATCH 09/14] ring_buffer: Initialize completions statically in the benchmark | Date | Tue, 28 Jul 2015 16:39:26 +0200 |
| |
It looks strange to initialize the completions repeatedly.
This patch uses static initialization. It simplifies the code and even helps to get rid of two memory barriers.
Signed-off-by: Petr Mladek <pmladek@suse.com> --- kernel/trace/ring_buffer_benchmark.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/kernel/trace/ring_buffer_benchmark.c b/kernel/trace/ring_buffer_benchmark.c index a1503a027ee2..ccb1a0b95f64 100644 --- a/kernel/trace/ring_buffer_benchmark.c +++ b/kernel/trace/ring_buffer_benchmark.c @@ -24,8 +24,8 @@ struct rb_page { static int wakeup_interval = 100; static int reader_finish; -static struct completion read_start; -static struct completion read_done; +static DECLARE_COMPLETION(read_start); +static DECLARE_COMPLETION(read_done); static struct ring_buffer *buffer; static struct task_struct *producer; @@ -270,11 +270,6 @@ static void ring_buffer_producer(void) trace_printk("End ring buffer hammer\n"); if (consumer) { - /* Init both completions here to avoid races */ - init_completion(&read_start); - init_completion(&read_done); - /* the completions must be visible before the finish var */ - smp_wmb(); reader_finish = 1; /* finish var visible before waking up the consumer */ smp_wmb(); @@ -389,13 +384,10 @@ static int ring_buffer_consumer_thread(void *arg) static int ring_buffer_producer_thread(void *arg) { - init_completion(&read_start); - while (!kthread_should_stop() && !kill_test) { ring_buffer_reset(buffer); if (consumer) { - smp_wmb(); wake_up_process(consumer); wait_for_completion(&read_start); } -- 1.8.5.6
| |