- kthread_stop(reader_threads[0]);
-
- printk("** Multiple readers test, no contention **\n");
- for (i = 0; i < NR_READERS; i++) {
- printk("starting reader thread %lu\n", i);
- reader_threads[i] = kthread_run(reader_thread, (void *)i,
- "wbiasrwlock_reader");
- BUG_ON(!reader_threads[i]);
+ kthread_stop(preader_threads[0]);
+ printk("\n");
+
+ wbias_rwlock_profile_latency_print();
+
+ printk("** Single non-preemptable reader test, no contention **\n");
+ wbias_rwlock_profile_latency_reset();
+ npreader_threads[0] = kthread_run(npreader_thread, (void *)0,
+ "wbiasrwlock_npreader");
+ BUG_ON(!npreader_threads[0]);
+ ssleep(SINGLE_READER_TEST_DURATION);
+ kthread_stop(npreader_threads[0]);
+ printk("\n");
+
+ wbias_rwlock_profile_latency_print();
+
+ printk("** Multiple p/non-p readers test, no contention **\n");
+ wbias_rwlock_profile_latency_reset();
+ for (i = 0; i < NR_PREADERS; i++) {
+ printk("starting preader thread %lu\n", i);
+ preader_threads[i] = kthread_run(preader_thread, (void *)i,
+ "wbiasrwlock_preader");
+ BUG_ON(!preader_threads[i]);
+ }
+ for (i = 0; i < NR_NPREADERS; i++) {
+ printk("starting npreader thread %lu\n", i);
+ npreader_threads[i] = kthread_run(npreader_thread, (void *)i,
+ "wbiasrwlock_npreader");
+ BUG_ON(!npreader_threads[i]);