-bit removed = 0; /* Has RCU removal happened, e.g., list_del_rcu()? */
-bit free = 0; /* Has RCU reclamation happened, e.g., kfree()? */
-bit need_mb = 0; /* =1 says need reader mb, =0 for reader response. */
-byte reader_progress[4];
- /* Count of read-side statement executions. */
+bit removed = 0; /* Has RCU removal happened, e.g., list_del_rcu()? */
+bit free = 0; /* Has RCU reclamation happened, e.g., kfree()? */
+bit need_mb = 0; /* =1 says need reader mb, =0 for reader response. */
+byte reader_progress[4]; /* Count of read-side statement executions. */
+bit reader_done = 0; /* =0 says reader still running, =1 says done. */
+bit updater_done = 0; /* =0 says updater still running, =1 says done. */
+
+/* Broadcast memory barriers to enable, prior synchronize_rcu() instance. */
+
+/* #define MB_A */ /* Not required for correctness. */
+/* #define MB_B */ /* Not required for correctness. */
+/* #define MB_C */ /* Not required for correctness. */
+
+/* Broadcast memory barriers to enable, current synchronize_rcu() instance. */
+
+#define MB_D /* First broadcast barrier in synchronize_rcu(). */
+/* #define MB_E */ /* Not required for correctness. */
+/* #define MB_F */ /* Not required for correctness. */
+#define MB_G /* Last broadcast barrier in synchronize_rcu(). */