Lines Matching refs:idx

147 static unsigned long srcu_readers_seq_idx(struct srcu_struct *sp, int idx)  in srcu_readers_seq_idx()  argument
154 t = ACCESS_ONCE(per_cpu_ptr(sp->per_cpu_ref, cpu)->seq[idx]); in srcu_readers_seq_idx()
164 static unsigned long srcu_readers_active_idx(struct srcu_struct *sp, int idx) in srcu_readers_active_idx() argument
171 t = ACCESS_ONCE(per_cpu_ptr(sp->per_cpu_ref, cpu)->c[idx]); in srcu_readers_active_idx()
186 static bool srcu_readers_active_idx_check(struct srcu_struct *sp, int idx) in srcu_readers_active_idx_check() argument
190 seq = srcu_readers_seq_idx(sp, idx); in srcu_readers_active_idx_check()
223 if (srcu_readers_active_idx(sp, idx) != 0) in srcu_readers_active_idx_check()
251 return srcu_readers_seq_idx(sp, idx) == seq; in srcu_readers_active_idx_check()
297 int idx; in __srcu_read_lock() local
299 idx = ACCESS_ONCE(sp->completed) & 0x1; in __srcu_read_lock()
301 __this_cpu_inc(sp->per_cpu_ref->c[idx]); in __srcu_read_lock()
303 __this_cpu_inc(sp->per_cpu_ref->seq[idx]); in __srcu_read_lock()
305 return idx; in __srcu_read_lock()
315 void __srcu_read_unlock(struct srcu_struct *sp, int idx) in __srcu_read_unlock() argument
318 this_cpu_dec(sp->per_cpu_ref->c[idx]); in __srcu_read_unlock()
340 static bool try_check_zero(struct srcu_struct *sp, int idx, int trycount) in try_check_zero() argument
343 if (srcu_readers_active_idx_check(sp, idx)) in try_check_zero()
560 int idx = 1 ^ (sp->completed & 1); in srcu_advance_batches() local
574 if (!try_check_zero(sp, idx, trycount)) in srcu_advance_batches()
603 if (!try_check_zero(sp, idx^1, trycount)) in srcu_advance_batches()