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  |