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 |