/linux-6.12.1/include/trace/events/ |
D | rcu.h | 71 TP_PROTO(const char *rcuname, unsigned long gp_seq, const char *gpevent), 73 TP_ARGS(rcuname, gp_seq, gpevent), 77 __field(long, gp_seq) 83 __entry->gp_seq = (long)gp_seq; 88 __entry->rcuname, __entry->gp_seq, __entry->gpevent) 109 TP_PROTO(const char *rcuname, unsigned long gp_seq, 113 TP_ARGS(rcuname, gp_seq, gp_seq_req, level, grplo, grphi, gpevent), 117 __field(long, gp_seq) 127 __entry->gp_seq = (long)gp_seq; 136 __entry->rcuname, (long)__entry->gp_seq, (long)__entry->gp_seq_req, __entry->level, [all …]
|
/linux-6.12.1/kernel/rcu/ |
D | tiny.c | 35 unsigned long gp_seq; /* Grace-period counter. */ member 42 .gp_seq = 0 - 300UL, 61 WRITE_ONCE(rcu_ctrlblk.gp_seq, rcu_ctrlblk.gp_seq + 2); in rcu_qs() 157 WRITE_ONCE(rcu_ctrlblk.gp_seq, rcu_ctrlblk.gp_seq + 2); in synchronize_rcu() 218 return READ_ONCE(rcu_ctrlblk.gp_seq); in get_state_synchronize_rcu() 228 unsigned long gp_seq = get_state_synchronize_rcu(); in start_poll_synchronize_rcu() local 234 return gp_seq; in start_poll_synchronize_rcu() 245 return oldstate == RCU_GET_STATE_COMPLETED || READ_ONCE(rcu_ctrlblk.gp_seq) != oldstate; in poll_state_synchronize_rcu()
|
D | tree.c | 86 .gp_seq = (0UL - 300UL) << RCU_SEQ_CTR_SHIFT, 234 return rcu_seq_state(rcu_seq_current(&rcu_state.gp_seq)); in rcu_gp_in_progress() 528 return READ_ONCE(rcu_state.gp_seq); in rcu_get_gp_seq() 555 void rcutorture_get_gp_data(int *flags, unsigned long *gp_seq) in rcutorture_get_gp_data() argument 558 *gp_seq = rcu_seq_current(&rcu_state.gp_seq); in rcutorture_get_gp_data() 771 if (ULONG_CMP_LT(rcu_seq_current(&rdp->gp_seq) + ULONG_MAX / 4, in rcu_gpnum_ovf() 772 rnp->gp_seq)) in rcu_gpnum_ovf() 774 if (ULONG_CMP_LT(rdp->rcu_iw_gp_seq + ULONG_MAX / 4, rnp->gp_seq)) in rcu_gpnum_ovf() 775 rdp->rcu_iw_gp_seq = rnp->gp_seq + ULONG_MAX / 4; in rcu_gpnum_ovf() 798 trace_rcu_fqs(rcu_state.name, rdp->gp_seq, rdp->cpu, TPS("dti")); in rcu_watching_snap_save() [all …]
|
D | tree_stall.h | 230 rdp->rcu_iw_gp_seq = rnp->gp_seq; in rcu_iw_handler() 452 if (rsrp->gp_seq != rdp->gp_seq) in print_cpu_stat_info() 499 ticks_value = rcu_seq_ctr(rcu_state.gp_seq - rdp->gp_seq); in print_cpu_stall_info() 506 delta = rcu_seq_ctr(rdp->mynode->gp_seq - rdp->rcu_iw_gp_seq); in print_cpu_stall_info() 543 (long)rcu_seq_current(&rcu_state.gp_seq), in rcu_check_gp_kthread_starvation() 586 (long)rcu_seq_current(&rcu_state.gp_seq), in rcu_check_gp_kthread_expired_fqs_timer() 595 static void print_other_cpu_stall(unsigned long gp_seq, unsigned long gps) in print_other_cpu_stall() argument 638 (long)rcu_seq_current(&rcu_state.gp_seq), totqlen, in print_other_cpu_stall() 647 if (rcu_seq_current(&rcu_state.gp_seq) != gp_seq) { in print_other_cpu_stall() 704 (long)rcu_seq_current(&rcu_state.gp_seq), totqlen, in print_cpu_stall() [all …]
|
D | rcu.h | 527 void rcu_tasks_get_gp_data(int *flags, unsigned long *gp_seq); 532 void rcu_tasks_rude_get_gp_data(int *flags, unsigned long *gp_seq); 536 void rcu_tasks_trace_get_gp_data(int *flags, unsigned long *gp_seq); 568 void rcutorture_get_gp_data(int *flags, unsigned long *gp_seq); 576 static inline void rcutorture_get_gp_data(int *flags, unsigned long *gp_seq) in rcutorture_get_gp_data() argument 579 *gp_seq = 0; in rcutorture_get_gp_data() 597 unsigned long *gp_seq) in srcutorture_get_gp_data() argument 600 *gp_seq = sp->srcu_idx; in srcutorture_get_gp_data() 606 unsigned long *gp_seq);
|
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()
|
D | tree_plugin.h | 256 WARN_ON_ONCE(rnp->completedqs == rnp->gp_seq); in rcu_preempt_ctxt_queue() 302 __this_cpu_read(rcu_data.gp_seq), in rcu_qs() 351 ? rnp->gp_seq in rcu_note_context_switch() 352 : rcu_seq_snap(&rnp->gp_seq)); in rcu_note_context_switch() 533 WARN_ON_ONCE(rnp->completedqs == rnp->gp_seq && in rcu_preempt_deferred_qs_irqrestore() 541 rnp->gp_seq, t->pid); in rcu_preempt_deferred_qs_irqrestore() 562 rnp->gp_seq, in rcu_preempt_deferred_qs_irqrestore() 718 rnp->gp_seq, t->pid); in rcu_preempt_check_blocked_tasks() 800 (long)READ_ONCE(rnp->gp_seq), (long)rnp->completedqs); in dump_blkd_tasks() 865 __this_cpu_read(rcu_data.gp_seq), TPS("cpuqs")); in rcu_qs()
|
D | tree.h | 45 unsigned long gp_seq; /* Track rsp->gp_seq. */ member 167 unsigned long gp_seq; /* Track rdp->gp_seq counter */ member 180 unsigned long gp_seq; /* Track rsp->gp_seq counter. */ member 350 unsigned long gp_seq ____cacheline_internodealigned_in_smp;
|
D | tree_nocb.h | 184 return &rnp->nocb_gp_wq[rcu_seq_ctr(rnp->gp_seq) & 0x1]; in rcu_nocb_gp_get() 469 rcu_seq_done(&rdp->mynode->gp_seq, cur_gp_seq)) { in rcu_nocb_try_bypass() 580 rcu_seq_done(&rdp->mynode->gp_seq, cur_gp_seq)) { in __call_rcu_nocb_wake() 737 rcu_seq_done(&rnp->gp_seq, cur_gp_seq))) { in nocb_gp_wait() 811 rcu_seq_done(&rnp->gp_seq, wait_gp_seq) || in nocb_gp_wait() 917 rcu_seq_done(&rnp->gp_seq, cur_gp_seq) && in nocb_cb_wait() 1564 sprintf(bufw, "%ld", rsclp->gp_seq[RCU_WAIT_TAIL]); in show_rcu_nocb_state() 1565 sprintf(bufr, "%ld", rsclp->gp_seq[RCU_NEXT_READY_TAIL]); in show_rcu_nocb_state()
|
D | rcutorture.c | 386 void (*get_gp_data)(int *flags, unsigned long *gp_seq); 637 static void srcu_get_gp_data(int *flags, unsigned long *gp_seq) in srcu_get_gp_data() argument 639 srcutorture_get_gp_data(srcu_ctlp, flags, gp_seq); in srcu_get_gp_data() 2289 unsigned long __maybe_unused gp_seq = 0; in rcu_torture_stats_print() local 2292 cur_ops->get_gp_data(&flags, &gp_seq); in rcu_torture_stats_print() 2296 rcu_torture_writer_state, gp_seq, flags, in rcu_torture_stats_print() 3384 unsigned long gp_seq = 0; in rcu_torture_cleanup() local 3437 cur_ops->get_gp_data(&flags, &gp_seq); in rcu_torture_cleanup() 3439 cur_ops->name, (long)gp_seq, flags, in rcu_torture_cleanup() 3440 rcutorture_seq_diff(gp_seq, start_gp_seq)); in rcu_torture_cleanup() [all …]
|
D | tasks.h | 1275 void rcu_tasks_get_gp_data(int *flags, unsigned long *gp_seq) in rcu_tasks_get_gp_data() argument 1278 *gp_seq = rcu_seq_current(&rcu_tasks.tasks_gp_seq); in rcu_tasks_get_gp_data() 1441 void rcu_tasks_rude_get_gp_data(int *flags, unsigned long *gp_seq) in rcu_tasks_rude_get_gp_data() argument 1444 *gp_seq = rcu_seq_current(&rcu_tasks_rude.tasks_gp_seq); in rcu_tasks_rude_get_gp_data() 2124 void rcu_tasks_trace_get_gp_data(int *flags, unsigned long *gp_seq) in rcu_tasks_trace_get_gp_data() argument 2127 *gp_seq = rcu_seq_current(&rcu_tasks_trace.tasks_gp_seq); in rcu_tasks_trace_get_gp_data()
|
D | srcutree.c | 1838 unsigned long *gp_seq) in srcutorture_get_gp_data() argument 1841 *gp_seq = rcu_seq_current(&ssp->srcu_sup->srcu_gp_seq); in srcutorture_get_gp_data()
|
/linux-6.12.1/tools/testing/selftests/bpf/progs/ |
D | rcu_tasks_trace_gp.c | 13 long gp_seq; variable 32 __sync_add_and_fetch(&gp_seq, 1); in rcu_tasks_trace_postgp()
|
/linux-6.12.1/tools/testing/selftests/bpf/prog_tests/ |
D | map_kptr.c | 121 long gp_seq = READ_ONCE(rcu->bss->gp_seq); in kern_sync_rcu_tasks_trace() local 129 while (gp_seq == READ_ONCE(rcu->bss->gp_seq)) in kern_sync_rcu_tasks_trace()
|
/linux-6.12.1/include/linux/ |
D | rcu_segcblist.h | 193 unsigned long gp_seq[RCU_CBLIST_NSEGS]; member
|
/linux-6.12.1/Documentation/RCU/Design/Data-Structures/ |
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`` 383 1 unsigned long gp_seq; 386 The ``rcu_node`` structures' ``->gp_seq`` fields are the counterparts of 389 two bits of a given ``rcu_node`` structure's ``->gp_seq`` field is zero, 392 The ``>gp_seq`` field of each ``rcu_node`` structure is updated at the 397 request is considered fulfilled when the value of the ``->gp_seq`` field 404 | very long time. Won't wrapping of the ``->gp_seq`` field cause | [all …]
|
/linux-6.12.1/Documentation/RCU/Design/Memory-Ordering/ |
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
|