Function report |
Source Code:kernel\rcu\rcutorture.c |
Create Date:2022-07-28 10:21:41 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:Do one extension of an RCU read-side critical section using the* current reader state in readstate (set to zero for initial entry* to extended critical section), set the new state as specified by* newstate (set to zero for final exit from extended
Proto:static void rcutorture_one_extend(int *readstate, int newstate, struct torture_random_state *trsp, struct rt_read_seg *rtrsp)
Type:void
Parameter:
| Type | Parameter | Name |
|---|---|---|
| int * | readstate | |
| int | newstate | |
| struct torture_random_state * | trsp | |
| struct rt_read_seg * | rtrsp |
| 1147 | idxnew = -1 |
| 1152 | WARN_ON_ONCE(idxold < 0) |
| 1153 | WARN_ON_ONCE((idxold >> Put SRCU index in upper bits. ) > 1) |
| 1154 | rt_readstate = newstate |
| 1157 | If statesnew & Extend readers by disabling bh. Then local_bh_disable() |
| 1159 | If statesnew & ... disabling interrupts. Then local_irq_disable() |
| 1163 | If statesnew & ... rcu_read_lock_bh(). Then _read_lock_bh() - mark the beginning of an RCU-bh critical section* This is equivalent of rcu_read_lock(), but also disables softirqs |
| 1167 | If statesnew & ... entering another RCU reader. Then idxnew = readlock() << Put SRCU index in upper bits. |
| 1171 | If statesold & ... disabling interrupts. Then The local_irq_*() APIs are equal to the raw_local_irq*()* if !TRACE_IRQFLAGS.() |
| 1173 | If statesold & Extend readers by disabling bh. Then local_bh_enable() |
| 1175 | If statesold & ... disabling preemption. Then preempt_enable() |
| 1177 | If statesold & ... rcu_read_lock_bh(). Then _read_unlock_bh - marks the end of a softirq-only RCU critical section* See rcu_read_lock_bh() for more information. |
| 1179 | If statesold & ... rcu_read_lock_sched(). Then _read_unlock_sched - marks the end of a RCU-classic critical section* See rcu_read_lock_sched for more information. |
| 1181 | If statesold & ... entering another RCU reader. Then readunlock(idxold >> Put SRCU index in upper bits. ) |
| 1189 | If idxnew == -1 Then idxnew = idxold & ~RCUTORTURE_RDR_MASK |
| 1191 | WARN_ON_ONCE(idxnew < 0) |
| 1192 | WARN_ON_ONCE((idxnew >> Put SRCU index in upper bits. ) > 1) |
| 1194 | WARN_ON_ONCE(( * readstate >> Put SRCU index in upper bits. ) < 0) |
| 1195 | WARN_ON_ONCE(( * readstate >> Put SRCU index in upper bits. ) > 1) |
| Name | Describe |
|---|---|
| rcutorture_loop_extend | Do a randomly selected number of extensions of an existing RCU read-side* critical section. |
| rcu_torture_one_read | Do one read-side critical section, returning false if there was* no data to read. Can be invoked both from process context and* from a timer handler. |
| 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 |