io_uring: ensure finish_wait() is always called in __io_uring_task_cancel()
[linux/fpc-iii.git] / Documentation / litmus-tests / rcu / RCU+sync+read.litmus
blobf34176720231dee1debcfdb297b2ec4e8b184daf
1 C RCU+sync+read
3 (*
4  * Result: Never
5  *
6  * This litmus test demonstrates that after a grace period, an RCU updater always
7  * sees all stores done in prior RCU read-side critical sections. Such
8  * read-side critical sections would have ended before the grace period ended.
9  *
10  * This is one implication of the RCU grace-period guarantee, which says (among
11  * other things) that an RCU read-side critical section cannot span a grace period.
12  *)
15 int x = 0;
16 int y = 0;
19 P0(int *x, int *y)
21         rcu_read_lock();
22         WRITE_ONCE(*x, 1);
23         WRITE_ONCE(*y, 1);
24         rcu_read_unlock();
27 P1(int *x, int *y)
29         int r0;
30         int r1;
32         r0 = READ_ONCE(*x);
33         synchronize_rcu();
34         r1 = READ_ONCE(*y);
37 exists (1:r0=1 /\ 1:r1=0)