aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/selftest/mpmc_ring.h
diff options
context:
space:
mode:
authorThomas Gschwantner <tharre3@gmail.com>2018-06-15 21:36:17 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-06-18 15:08:56 +0200
commitf28a757b2a37d5ff4d1b5dfb2caacada59420c86 (patch)
tree4aaa5c70d97be1d7d7ed8ca75f9979a740d83363 /src/selftest/mpmc_ring.h
parentselftest/mpmc_ring: use int64_t for counters (diff)
downloadwireguard-monolithic-historical-f28a757b2a37d5ff4d1b5dfb2caacada59420c86.tar.xz
wireguard-monolithic-historical-f28a757b2a37d5ff4d1b5dfb2caacada59420c86.zip
Test commit
Diffstat (limited to '')
-rw-r--r--src/selftest/mpmc_ring.h16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/selftest/mpmc_ring.h b/src/selftest/mpmc_ring.h
index 1cea5bf..f5f8fcf 100644
--- a/src/selftest/mpmc_ring.h
+++ b/src/selftest/mpmc_ring.h
@@ -10,9 +10,9 @@
#include <linux/workqueue.h>
#include <linux/wait.h>
-#define THREADS_PRODUCER 16
-#define THREADS_CONSUMER 16
-#define ELEMENT_COUNT 1000000LL /* divisible by threads_{consumer,producer} */
+#define THREADS_PRODUCER 2
+#define THREADS_CONSUMER 2
+#define ELEMENT_COUNT 100000000LL /* divisible by threads_{consumer,producer} */
#define QUEUE_SIZE 1024
#define EXPECTED_TOTAL ((ELEMENT_COUNT * (ELEMENT_COUNT + 1)) / 2)
@@ -40,8 +40,10 @@ static __init void producer_function(struct work_struct *work)
uintptr_t count = (td->thread_num * PER_PRODUCER) + 1;
for (; count <= (td->thread_num + 1) * PER_PRODUCER; ++count) {
- while (mpmc_ptr_ring_produce(ring, (void *) count))
+ while (mpmc_ptr_ring_produce(ring, (void *) count)) {
schedule();
+ /*pr_info("We have awoken (producer)");*/
+ }
}
}
@@ -52,9 +54,11 @@ static __init void consumer_function(struct work_struct *work)
for (i = 0; i < PER_CONSUMER; ++i) {
uintptr_t value;
-
- while (!(value = (uintptr_t) mpmc_ptr_ring_consume(ring)))
+ while (!(value = (uintptr_t) mpmc_ptr_ring_consume(ring))) {
schedule();
+ /*cpu_relax();*/
+ /*pr_info("We have awoken (consumer)");*/
+ }
td->total += value;
++(td->count);