Lines Matching refs:readers

405 spin_lock() or write_lock()), non-recursive readers (i.e. shared lockers, like
406 down_read()) and recursive readers (recursive shared lockers, like rcu_read_lock()).
410 r: stands for non-recursive readers.
411 R: stands for recursive readers.
412 S: stands for all readers (non-recursive + recursive), as both are shared lockers.
413 N: stands for writers and non-recursive readers, as both are not recursive.
417 Recursive readers, as their name indicates, are the lockers allowed to acquire
421 While non-recursive readers will cause a self deadlock if trying to acquire inside
424 The difference between recursive readers and non-recursive readers is because:
425 recursive readers get blocked only by a write lock *holder*, while non-recursive
426 readers could get blocked by a write lock *waiter*. Considering the follow
437 and become a waiter for writer on X. Now if read_lock_2() is recursive readers,
438 task A will make progress, because writer waiters don't block recursive readers,
439 and there is no deadlock. However, if read_lock_2() is non-recursive readers,
442 Block conditions on readers/writers of the same lock instance:
448 3. Writers block both recursive readers and non-recursive readers.
449 4. And readers (recursive or not) don't block other recursive readers but
450 may block non-recursive readers (because of the potential co-existing
465 (W: writers, r: non-recursive readers, R: recursive readers)
527 recursive readers and non-recursive readers for L1 (as they block the same types) and
528 we can combine writers and non-recursive readers for L2 (as they get blocked by the
656 reader, because readers (no matter recursive or not) don't block recursive
657 readers, therefore Lx-1 -> Lx and Lx -> Lx+1 cannot be a -(xR)-> -(Sx)-> pair,