+ /* Keep in sync manually with smp_rmb, smp_wmb, ooo_mem and init() */
+ DECLARE_PROC_CACHED_VAR(byte, urcu_gp_ctr);
+ /* Note ! currently only one reader */
+ DECLARE_PROC_CACHED_VAR(byte, urcu_active_readers[NR_READERS]);
+ /* RCU data */
+ DECLARE_PROC_CACHED_VAR(bit, rcu_data[SLAB_SIZE]);
+
+ /* RCU pointer */
+#if (SLAB_SIZE == 2)
+ DECLARE_PROC_CACHED_VAR(bit, rcu_ptr);
+#else
+ DECLARE_PROC_CACHED_VAR(byte, rcu_ptr);
+#endif
+
+ atomic {
+ INIT_PROC_CACHED_VAR(urcu_gp_ctr, 1);
+ INIT_PROC_CACHED_VAR(rcu_ptr, 0);
+
+ i = 0;
+ do
+ :: i < NR_READERS ->
+ INIT_PROC_CACHED_VAR(urcu_active_readers[i], 0);
+ i++;
+ :: i >= NR_READERS -> break
+ od;
+ INIT_PROC_CACHED_VAR(rcu_data[0], WINE);
+ i = 1;
+ do
+ :: i < SLAB_SIZE ->
+ INIT_PROC_CACHED_VAR(rcu_data[i], POISON);
+ i++
+ :: i >= SLAB_SIZE -> break
+ od;
+ }
+