| /linux/kernel/rcu/ |
| H A D | tree.c | 95 .gp_seq = (0UL - 300UL) << RCU_SEQ_CTR_SHIFT, 222 return rcu_seq_state(rcu_seq_current(&rcu_state.gp_seq)); in rcu_gp_in_progress() 523 return READ_ONCE(rcu_state.gp_seq); in rcu_get_gp_seq() 550 void rcutorture_get_gp_data(int *flags, unsigned long *gp_seq) in rcutorture_get_gp_data() 553 *gp_seq = rcu_seq_current(&rcu_state.gp_seq); in rcutorture_get_gp_data() 560 return ((READ_ONCE(rcu_state.gp_seq) & 0xffffULL) << 40) | in rcutorture_gather_gp_seqs() 798 * of the rcu_node ->gp_seq counter with respect to the rcu_data counters. 805 if (ULONG_CMP_LT(rcu_seq_current(&rdp->gp_seq) + seq_gpwrap_lag, in rcu_gpnum_ovf() 806 rnp->gp_seq)) { in rcu_gpnum_ovf() 549 rcutorture_get_gp_data(int * flags,unsigned long * gp_seq) rcutorture_get_gp_data() argument 3480 unsigned long gp_seq = get_state_synchronize_rcu(); start_poll_synchronize_rcu() local [all...] |
| H A D | rcu_segcblist.c | 241 BUILD_BUG_ON(RCU_NEXT_TAIL + 1 != ARRAY_SIZE(rsclp->gp_seq)); in rcu_segcblist_init() 242 BUILD_BUG_ON(ARRAY_SIZE(rsclp->tails) != ARRAY_SIZE(rsclp->gp_seq)); in rcu_segcblist_init() 316 *lp = rsclp->gp_seq[RCU_WAIT_TAIL]; in rcu_segcblist_nextgp() 482 if (ULONG_CMP_LT(seq, rsclp->gp_seq[i])) in rcu_segcblist_advance() 507 rsclp->gp_seq[j] = rsclp->gp_seq[i]; in rcu_segcblist_advance() 544 ULONG_CMP_LT(rsclp->gp_seq[i], seq)) in rcu_segcblist_accelerate() 584 rsclp->gp_seq[i] = seq; in rcu_segcblist_accelerate()
|
| H A D | tree.h | 45 unsigned long gp_seq; /* Track rsp->gp_seq. */ member 162 * The member gp_seq is used to ensure that all members are updated only once 163 * during the sampling period. The snapshot is taken only if this gp_seq is not 164 * equal to rdp->gp_seq. 167 unsigned long gp_seq; /* Track rdp->gp_seq counter */ member 191 unsigned long gp_seq; /* Track rsp->gp_seq counter. */ member 196 bool gpwrap; /* Possible ->gp_seq wra [all...] |
| H A D | tree_nocb.h | 184 return &rnp->nocb_gp_wq[rcu_seq_ctr(rnp->gp_seq) & 0x1]; in rcu_nocb_gp_get() 475 rcu_seq_done(&rdp->mynode->gp_seq, cur_gp_seq)) { in rcu_nocb_try_bypass() 711 rcu_seq_done(&rnp->gp_seq, cur_gp_seq))) { in nocb_gp_wait() 785 rcu_seq_done(&rnp->gp_seq, wait_gp_seq) || in nocb_gp_wait() 899 rcu_seq_done(&rnp->gp_seq, cur_gp_seq) && in nocb_cb_wait() 1549 sprintf(bufw, "%ld(%ld)", rsclp->seglen[RCU_WAIT_TAIL], rsclp->gp_seq[RCU_WAIT_TAIL]); 1551 rsclp->gp_seq[RCU_NEXT_READY_TAIL]); in show_rcu_nocb_state()
|
| H A D | rcutorture.c | 421 void (*get_gp_data)(int *flags, unsigned long *gp_seq); 718 static void srcu_get_gp_data(int *flags, unsigned long *gp_seq) in srcu_get_gp_data() argument 720 srcutorture_get_gp_data(srcu_ctlp, flags, gp_seq); in srcu_get_gp_data() 2826 unsigned long __maybe_unused gp_seq = 0; in rcu_torture_stats_print() local 2829 cur_ops->get_gp_data(&flags, &gp_seq); in rcu_torture_stats_print() 2833 rcu_torture_writer_state, gp_seq, flags, in rcu_torture_stats_print() 4014 unsigned long gp_seq = 0; in rcu_torture_cleanup() local 4073 cur_ops->get_gp_data(&flags, &gp_seq); in rcu_torture_cleanup() 4075 cur_ops->name, (long)gp_seq, flags, in rcu_torture_cleanup() 4076 rcutorture_seq_diff(gp_seq, start_gp_seq)); in rcu_torture_cleanup() [all …]
|
| H A D | tasks.h | 1269 void rcu_tasks_get_gp_data(int *flags, unsigned long *gp_seq) in rcu_tasks_get_gp_data() argument 1272 *gp_seq = rcu_seq_current(&rcu_tasks.tasks_gp_seq); in rcu_tasks_get_gp_data() 1434 void rcu_tasks_rude_get_gp_data(int *flags, unsigned long *gp_seq) in rcu_tasks_rude_get_gp_data() argument 1437 *gp_seq = rcu_seq_current(&rcu_tasks_rude.tasks_gp_seq); in rcu_tasks_rude_get_gp_data()
|
| H A D | srcutree.c | 2019 unsigned long *gp_seq) in srcutorture_get_gp_data() argument 2022 *gp_seq = rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq); in srcutorture_get_gp_data()
|
| /linux/Documentation/RCU/Design/Data-Structures/ |
| H A D | Data-Structures.rst | 272 1 unsigned long gp_seq; 274 RCU grace periods are numbered, and the ``->gp_seq`` field contains the 278 ``->gp_seq`` are zero, then RCU is idle. Any other value in the bottom 282 There are ``->gp_seq`` fields in the ``rcu_node`` and ``rcu_data`` 292 | Given that the root rcu_node structure has a gp_seq field, | 293 | why does RCU maintain a separate gp_seq in the rcu_state structure? | 294 | Why not just use the root rcu_node's gp_seq as the official record | 300 | updating the root node's gp_seq immediately would create unnecessary | 303 | If we did rcu_seq_start() directly on the root node's gp_seq: | 305 | 1. All CPUs would immediately see their node's gp_seq from their rdp's| [all …]
|
| /linux/include/linux/ |
| H A D | rcu_segcblist.h | 193 unsigned long gp_seq[RCU_CBLIST_NSEGS]; member
|
| /linux/Documentation/RCU/Design/Memory-Ordering/ |
| H A D | Tree-RCU-Memory-Ordering.rst | 341 advance the ``rcu_state`` structure's ``->gp_seq`` grace-period-number 369 breadth-first, setting each ``rcu_node`` structure's ``->gp_seq`` field 379 ``rcu_state`` structure's ``->gp_seq`` field) before setting each leaf 380 ``rcu_node`` structure's ``->gp_seq`` field, each CPU's observation of 436 | beginning of the grace period (the advancing of ``->gp_seq`` from | 566 advancing all the ``->gp_seq`` fields, then it advances the 567 ``rcu_state`` structure's ``->gp_seq`` field. The ordering effects are 586 | once the ``rcu_state`` structure's ``->gp_seq`` field has been | 595 Once a given CPU's leaf ``rcu_node`` structure's ``->gp_seq`` field has
|
| /linux/Documentation/admin-guide/ |
| H A D | kernel-parameters.txt | 6107 rdp and rnp's gp_seq before setting overflow flag.
|