Function report |
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 activity | Download SCCT | Chinese |
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:
| Type | Parameter | Name |
|---|---|---|
| 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 |
| 2156 | Return |
| 2164 | local_irq_save(flags) |
| 2165 | rcu_nocb_lock(rdp) |
| 2166 | WARN_ON_ONCE(cpu_is_offline(smp_processor_id())) |
| 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. |
| 2175 | If offloaded Then different grace periods. = Return number of callbacks in segmented callback list. |
| 2177 | rcu_nocb_unlock_irqrestore(rdp, flags) |
| 2181 | rhp = rcu_cblist_dequeue( & rcl) |
| 2183 | debug_rcu_head_unqueue(rhp) |
| 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 |
| 2202 | WARN_ON_ONCE(in_serving_softirq()) |
| 2203 | local_bh_enable() |
| 2204 | lockdep_assert_irqs_enabled() |
| 2206 | lockdep_assert_irqs_enabled() |
| 2207 | local_bh_disable() |
| 2211 | local_irq_save(flags) |
| 2212 | rcu_nocb_lock(rdp) |
| 2219 | smp_mb() |
| 2220 | rcu_segcblist_insert_count( & Segmented callback list, with , & rcl) |
| 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 |
| 2231 | Else if count < different grace periods. - qhimark Then different grace periods. = count |
| 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() |
| Name | Describe |
|---|---|
| rcu_core | Perform RCU core processing work for the current CPU. |
| Source code conversion tool public plug-in interface | X |
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |