Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

torture: Reduce #ifdefs for preempt_schedule()

This commit adds a torture_preempt_schedule() that is nothingness
in !PREEMPT builds and is preempt_schedule() otherwise. Then
torture_preempt_schedule() is used to eliminate several ugly #ifdefs,
both in rcutorture and in locktorture.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>

+13 -21
+6
include/linux/torture.h
··· 96 96 #define torture_stop_kthread(n, tp) \ 97 97 _torture_stop_kthread("Stopping " #n " task", &(tp)) 98 98 99 + #ifdef CONFIG_PREEMPT 100 + #define torture_preempt_schedule() preempt_schedule() 101 + #else 102 + #define torture_preempt_schedule() 103 + #endif 104 + 99 105 #endif /* __LINUX_TORTURE_H */
+6 -18
kernel/locking/locktorture.c
··· 130 130 if (!(torture_random(trsp) % 131 131 (cxt.nrealwriters_stress * 2000 * longdelay_ms))) 132 132 mdelay(longdelay_ms); 133 - #ifdef CONFIG_PREEMPT 134 133 if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 20000))) 135 - preempt_schedule(); /* Allow test to be preempted. */ 136 - #endif 134 + torture_preempt_schedule(); /* Allow test to be preempted. */ 137 135 } 138 136 139 137 static void torture_lock_busted_write_unlock(void) ··· 177 179 if (!(torture_random(trsp) % 178 180 (cxt.nrealwriters_stress * 2 * shortdelay_us))) 179 181 udelay(shortdelay_us); 180 - #ifdef CONFIG_PREEMPT 181 182 if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 20000))) 182 - preempt_schedule(); /* Allow test to be preempted. */ 183 - #endif 183 + torture_preempt_schedule(); /* Allow test to be preempted. */ 184 184 } 185 185 186 186 static void torture_spin_lock_write_unlock(void) __releases(torture_spinlock) ··· 348 352 mdelay(longdelay_ms * 5); 349 353 else 350 354 mdelay(longdelay_ms / 5); 351 - #ifdef CONFIG_PREEMPT 352 355 if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 20000))) 353 - preempt_schedule(); /* Allow test to be preempted. */ 354 - #endif 356 + torture_preempt_schedule(); /* Allow test to be preempted. */ 355 357 } 356 358 357 359 static void torture_mutex_unlock(void) __releases(torture_mutex) ··· 501 507 if (!(torture_random(trsp) % 502 508 (cxt.nrealwriters_stress * 2 * shortdelay_us))) 503 509 udelay(shortdelay_us); 504 - #ifdef CONFIG_PREEMPT 505 510 if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 20000))) 506 - preempt_schedule(); /* Allow test to be preempted. */ 507 - #endif 511 + torture_preempt_schedule(); /* Allow test to be preempted. */ 508 512 } 509 513 510 514 static void torture_rtmutex_unlock(void) __releases(torture_rtmutex) ··· 539 547 mdelay(longdelay_ms * 10); 540 548 else 541 549 mdelay(longdelay_ms / 10); 542 - #ifdef CONFIG_PREEMPT 543 550 if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 20000))) 544 - preempt_schedule(); /* Allow test to be preempted. */ 545 - #endif 551 + torture_preempt_schedule(); /* Allow test to be preempted. */ 546 552 } 547 553 548 554 static void torture_rwsem_up_write(void) __releases(torture_rwsem) ··· 564 574 mdelay(longdelay_ms * 2); 565 575 else 566 576 mdelay(longdelay_ms / 2); 567 - #ifdef CONFIG_PREEMPT 568 577 if (!(torture_random(trsp) % (cxt.nrealreaders_stress * 20000))) 569 - preempt_schedule(); /* Allow test to be preempted. */ 570 - #endif 578 + torture_preempt_schedule(); /* Allow test to be preempted. */ 571 579 } 572 580 573 581 static void torture_rwsem_up_read(void) __releases(torture_rwsem)
+1 -3
kernel/rcu/rcutorture.c
··· 315 315 } 316 316 if (!(torture_random(rrsp) % (nrealreaders * 2 * shortdelay_us))) 317 317 udelay(shortdelay_us); 318 - #ifdef CONFIG_PREEMPT 319 318 if (!preempt_count() && 320 319 !(torture_random(rrsp) % (nrealreaders * 20000))) 321 - preempt_schedule(); /* No QS if preempt_disable() in effect */ 322 - #endif 320 + torture_preempt_schedule(); /* QS only if preemptible. */ 323 321 } 324 322 325 323 static void rcu_torture_read_unlock(int idx) __releases(RCU)