1 // SPDX-License-Identifier: GPL-2.0
2 #include <src/combined_source.c>
7 int __unbuffered_tpr_x;
8 int __unbuffered_tpr_y;
16 #ifndef FORCE_FAILURE_3
17 idx = srcu_read_lock(&ss);
21 __unbuffered_tpr_y = READ_ONCE(y);
23 srcu_read_unlock(&ss, idx);
24 idx = srcu_read_lock(&ss);
28 #ifndef FORCE_FAILURE_3
29 srcu_read_unlock(&ss, idx);
34 void *thread_update(void *arg)
37 #ifndef FORCE_FAILURE_2
38 synchronize_srcu(&ss);
41 __unbuffered_tpr_x = READ_ONCE(x);
46 void *thread_process_reader(void *arg)
53 int main(int argc, char *argv[])
58 if (pthread_create(&tu, NULL, thread_update, NULL))
60 if (pthread_create(&tpr, NULL, thread_process_reader, NULL))
62 if (pthread_join(tu, NULL))
64 if (pthread_join(tpr, NULL))
66 assert(__unbuffered_tpr_y != 0 || __unbuffered_tpr_x != 0);