Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

Name:Invoke any RCU callbacks that have made it to the end of their grace* period. Thottle as specified by rdp->blimit.

Proto:static void rcu_do_batch(struct rcu_data *rdp)

Type:void

Parameter:

TypeParameterName
struct rcu_data *rdp
2140  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?
2143  rcl = RCU_CBLIST_INITIALIZER(rcl)
2145  tlimit = 0
2148  If Not Does the specified rcu_segcblist structure contain callbacks that* are ready to be invoked? Then
2149  Tracepoint for marking the beginning rcu_do_batch, performed to start* RCU callback invocation
2152  Tracepoint for exiting rcu_do_batch after RCU callbacks have been* invoked
2156  Return
2164  local_irq_save(flags)
2165  rcu_nocb_lock(rdp)
2166  WARN_ON_ONCE(cpu_is_offline(smp_processor_id()))
2167  pending = Return number of callbacks in segmented callback list.
2168  bl = max - return maximum of two values of the same or compatible types*@x: first value*@y: second value(Upper limit on a processed batch , pending >> rcu_divisor)
2169  If Value for the false possibility is greater at compile time(bl > 100) Then tlimit = local_clock() + Force an exit from rcu_do_batch() after 3 milliseconds.
2171  Tracepoint for marking the beginning rcu_do_batch, performed to start* RCU callback invocation
2174  rcu_segcblist_extract_done_cbs( & Segmented callback list, with , & rcl)
2175  If offloaded Then different grace periods. = Return number of callbacks in segmented callback list.
2177  rcu_nocb_unlock_irqrestore(rdp, flags)
2180  tick_dep_set_task(current process, TICK_DEP_BIT_RCU)
2181  rhp = rcu_cblist_dequeue( & rcl)
2182  When rhp cycle
2183  debug_rcu_head_unqueue(rhp)
2184  If Reclaim the specified callback, either by invoking it (non-lazy case)* or freeing it directly (lazy case). Return true if lazy, false otherwise. Then Account for the fact that a previously dequeued callback turned out* to be marked as lazy.
2190  If -len >= bl && Not offloaded && (need_resched() || Not s_idle_task - is the specified task an idle task?*@p: the task in question.* Return: 1 if @p is an idle task. 0 otherwise. && Not rcu_is_callbacks_kthread() ) Then Break
2196  If Value is more likely to compile time(( - len & 31) || local_clock() < tlimit) Then Continue
2199  Break
2201  If offloaded Then
2203  local_bh_enable()
2207  local_bh_disable()
2211  local_irq_save(flags)
2212  rcu_nocb_lock(rdp)
2213  count = -len
2214  Tracepoint for exiting rcu_do_batch after RCU callbacks have been* invoked
2218  rcu_segcblist_insert_done_cbs( & Segmented callback list, with , & rcl)
2219  smp_mb()
2220  rcu_segcblist_insert_count( & Segmented callback list, with , & rcl)
2223  count = Return number of callbacks in segmented callback list.
2224  If Upper limit on a processed batch >= ... even during callback flood. && count <= qlowmark Then Upper limit on a processed batch = blimit
2228  If count == 0 && different grace periods. != 0 Then
2229  different grace periods. = 0
2230  qlen at last check for QS forcing = Number of calls to
2231  Else if count < different grace periods. - qhimark Then different grace periods. = count
2238  WARN_ON_ONCE(count == 0 && !Is the specified rcu_segcblist structure empty?* But careful! The fact that the ->head field is NULL does not* necessarily imply that there are no callbacks associated with* this structure. When callbacks are being invoked, they are* removed as a group)
2239  WARN_ON_ONCE(!IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',* 0 otherwise.(CONFIG_RCU_NOCB_CPU) && count != 0 && Is the specified rcu_segcblist structure empty?* But careful! The fact that the ->head field is NULL does not* necessarily imply that there are no callbacks associated with* this structure. When callbacks are being invoked, they are* removed as a group)
2242  rcu_nocb_unlock_irqrestore(rdp, flags)
2245  If Not offloaded && Does the specified rcu_segcblist structure contain callbacks that* are ready to be invoked? Then invoke_rcu_core()
2247  tick_dep_clear_task(current process, TICK_DEP_BIT_RCU)
Caller
NameDescribe
rcu_corePerform RCU core processing work for the current CPU.