D.3.1.3 Per-CPU Data

The rcu_data structure contains RCU's per-CPU state. It contains control variables governing grace periods and quiescent states (completed, gpnum, passed_quiesc_completed, passed_quiesc, qs_pending, beenonline, mynode, and grpmask). The rcu_data structure also contains control variables pertaining to RCU callbacks (nxtlist, nxttail, qlen, and blimit). Kernels with dynticks enabled will have relevant control variables in the rcu_data structure (dynticks, dynticks_snap, and dynticks_nmi_snap). The rcu_data structure contains event counters used by tracing (dynticks_fqs given dynticks, offline_fqs, and resched_ipi). Finally, a pair of fields count calls to rcu_pending() in order to determine when to force quiescent states (n_rcu_pending and n_rcu_pending_force_qs), and a cpu field indicates which CPU to which a given rcu_data structure corresponds.

Each of these fields is described below.

Paul E. McKenney 2011-12-16