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 |