Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\rcu\tree.c Create Date:2022-07-28 10:26:44
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:Perform RCU core processing work for the current CPU.

Proto:static __latent_entropy void rcu_core(void)

Type:void

Parameter:Nothing

2374  rdp = raw_cpu_ptr( & rcu_data)
2375  rnp = This CPU's leaf of hierarchy
2376  offloaded = IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',* 0 otherwise.(CONFIG_RCU_NOCB_CPU) && Is the specified rcu_segcblist offloaded?
2379  If cpu_is_offline(smp_processor_id()) Then Return
2381  Tracepoint for start/end markers used for utilization calculations.* By convention, the string is of the following forms:* "Start " -- Mark the start of the specified activity,* such as "context switch". Nesting is permitted.
2382  WARN_ON_ONCE(!CPU online at least once. )
2385  If Not (We mask the PREEMPT_NEED_RESCHED bit so as not to confuse all current users* that think a non-zero value indicates we cannot preempt. & PREEMPT_MASK) Then
2386  rcu_preempt_deferred_qs(current process)
2387  Else if rcu_preempt_need_deferred_qs(current process) Then
2388  set_tsk_need_resched(current process)
2389  We fold the NEED_RESCHED bit into the preempt count such that* preempt_enable() can decrement and test for needing to reschedule with a* single instruction.* We invert the actual bit, so that when the decrement hits 0 we know we both
2393  Check to see if there is a new grace period of which this CPU* is not yet aware, and if so, set up local rcu_data state for it.* Otherwise, see if this CPU has just passed through its first
2396  If Not Return true if an RCU grace period is in progress. The READ_ONCE()s* permit this function to be invoked without holding the root rcu_node* structure's ->lock, but of course results can be subject to change. && Is the specified rcu_segcblist enabled, for example, not corresponding* to an offline CPU? && Not offloaded Then
2398  local_irq_save(flags)
2399  If Not Are all segments following the specified segment of the specified* rcu_segcblist structure empty of callbacks? (The specified* segment might well contain callbacks.) Then Similar to rcu_accelerate_cbs(), but does not require that the leaf* rcu_node structure's ->lock be held
2401  local_irq_restore(flags)
2404  rcu_check_gp_start_stall(rnp, rdp, Limit-check stall timeouts specified at boottime and runtime. )
2407  If Not offloaded && Does the specified rcu_segcblist structure contain callbacks that* are ready to be invoked? && Value is more likely to compile time(READ_ONCE(The rcu_scheduler_fully_active variable transitions from zero to one* during the early_initcall() processing, which is after the scheduler* is capable of creating new tasks)) Then Invoke any RCU callbacks that have made it to the end of their grace* period. Thottle as specified by rdp->blimit.
2412  do_nocb_deferred_wakeup(rdp)
2413  Tracepoint for start/end markers used for utilization calculations.* By convention, the string is of the following forms:* "Start " -- Mark the start of the specified activity,* such as "context switch". Nesting is permitted.
Caller
NameDescribe
rcu_core_si
rcu_cpu_kthreadPer-CPU kernel thread that invokes RCU callbacks. This replaces* the RCU softirq used in configurations of RCU that do not support RCU* priority boosting.