| /linux/include/linux/ |
| H A D | rwbase_rt.h | 12 atomic_t readers; member 18 .readers = ATOMIC_INIT(READER_BIAS), \ 25 atomic_set(&(rwbase)->readers, READER_BIAS); \ 31 return atomic_read(&rwb->readers) != READER_BIAS; in rw_base_is_locked() 36 return atomic_read(&rwb->readers) == WRITER_BIAS; in rw_base_is_write_locked() 41 return atomic_read(&rwb->readers) > 0; in rw_base_is_contended()
|
| H A D | rcu_sync.h | 16 /* Structure to mediate between updaters and fastpath-using readers. */ 26 * rcu_sync_is_idle() - Are readers permitted to use their fastpaths? 29 * Returns true if readers are permitted to use their fastpaths. Must be
|
| H A D | srcutiny.h | 20 u8 srcu_gp_waiting; /* GP waiting for readers? */ 158 * srcu_readers_active - returns true if there are readers. and false otherwise. 159 * @ssp: which srcu_struct to count active readers (holding srcu_read_lock).
|
| H A D | srcutree.h | 204 * and associated structures whose readers must be of the SRCU-fast variety. 206 * an srcu_struct and associated structures whose readers must be of the 310 * information on implicit RCU readers and NMI safety. 354 * information on implicit RCU readers and NMI safety. 378 * srcu_readers_active - returns true if there are readers. and false otherwise. 379 * @ssp: which srcu_struct to count active readers (holding srcu_read_lock).
|
| H A D | rculist.h | 14 * INIT_LIST_HEAD_RCU - Initialize a list_head visible to RCU readers 18 * cleanup tasks, when readers have no access to the list being initialized. 19 * However, if the list being initialized is visible to readers, you 249 * the perspective of concurrent readers. It is the caller's responsibility 321 * "first" and "last" tracking list, so initialize it. RCU readers in __list_splice_init_rcu() 330 * Wait for any readers to finish using the list before splicing in __list_splice_init_rcu() 331 * the list body into the new list. Any new readers will see in __list_splice_init_rcu() 340 * Readers are finished with the source list, so perform splice. in __list_splice_init_rcu() 342 * to concurrent RCU readers. Note that RCU readers are not in __list_splice_init_rcu() 609 * the perspective of concurrent readers. It is the caller's responsibility
|
| /linux/Documentation/RCU/ |
| H A D | checklist.rst | 30 One final exception is where RCU readers are used to prevent 40 RCU does allow *readers* to run (almost) naked, but *writers* must 92 The whole point of RCU is to permit readers to run without 93 any locks or atomic operations. This means that readers will 106 locks (that are acquired by both readers and writers) 107 that guard per-element state. Fields that the readers 113 c. Make updates appear atomic to readers. For example, 117 appear to be atomic to RCU readers, nor will sequences 125 d. Carefully order the updates and the reads so that readers 145 a. Readers must maintain proper ordering of their memory [all …]
|
| H A D | rcu.rst | 10 must be long enough that any readers accessing the item being deleted have 21 The advantage of RCU's two-part approach is that RCU readers need 26 in read-mostly situations. The fact that RCU readers need not 30 if the RCU readers give no indication when they are done? 32 Just as with spinlocks, RCU readers are not permitted to 42 same effect, but require that the readers manipulate CPU-local
|
| /linux/Documentation/locking/ |
| H A D | lockdep-design.rst | 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 [all …]
|
| /linux/kernel/rcu/ |
| H A D | sync.c | 42 * If it is called by rcu_sync_enter() it signals that all the readers were 51 * readers back onto their fastpaths (after a grace period). If both 54 * rcu_sync_exit(). Otherwise, set all state back to idle so that readers 91 * rcu_sync_enter() - Force readers onto slowpath 94 * This function is used by updaters who need readers to make use of 97 * tells readers to stay off their fastpaths. A later call to 143 * rcu_sync_exit() - Allow readers back onto fast path after grace period 147 * now allow readers to make use of their fastpaths after a grace period 149 * calls to rcu_sync_is_idle() will return true, which tells readers that
|
| /linux/rust/kernel/sync/ |
| H A D | srcu.rs | 32 /// SRCU readers may sleep while holding the read-side guard. 34 /// The destructor waits for active readers and callbacks, so it may sleep. 81 /// Waits until all pre-existing SRCU readers have completed. 88 /// Waits until all pre-existing SRCU readers have completed, expedited. 111 // `cleanup_srcu_struct()` may return early if there are still active readers. in drop() 118 // active readers (i.e. leaked guards). in drop()
|
| /linux/drivers/misc/cardreader/ |
| H A D | Kconfig | 9 Alcor Micro card readers support access to many types of memory cards, 21 Realtek card readers support access to many types of memory cards, 30 Select this option to get support for Realtek USB 2.0 card readers
|
| /linux/kernel/locking/ |
| H A D | qrwlock.c | 24 * Readers come here when they cannot get the lock without waiting in queued_read_lock_slowpath() 28 * Readers in interrupt context will get the lock immediately in queued_read_lock_slowpath() 80 /* Set the waiting flag to notify readers that a writer is pending */ in queued_write_lock_slowpath() 83 /* When no more readers or writers, set the locked flag */ in queued_write_lock_slowpath()
|
| /linux/tools/testing/selftests/kvm/lib/ |
| H A D | userfaultfd_util.c | 125 uffd_desc->readers = calloc(sizeof(pthread_t), num_readers); in uffd_setup_demand_paging() 126 TEST_ASSERT(uffd_desc->readers, "Failed to alloc reader threads"); in uffd_setup_demand_paging() 170 kvm_pthread_create(&uffd_desc->readers[i], NULL, uffd_handler_thread_fn, in uffd_setup_demand_paging() 190 kvm_pthread_join(uffd->readers[i], NULL); in uffd_stop_demand_paging() 200 free(uffd->readers); in uffd_stop_demand_paging()
|
| /linux/arch/sh/include/asm/ |
| H A D | spinlock-cas.h | 44 * Read-write spinlocks, allowing multiple readers but only one writer. 46 * NOTE! it is quite common to have readers in interrupts but no interrupt 48 * needs to get a irq-safe write-lock, but readers can get non-irqsafe
|
| H A D | spinlock-llsc.h | 82 * Read-write spinlocks, allowing multiple readers but only one writer. 84 * NOTE! it is quite common to have readers in interrupts but no interrupt 86 * needs to get a irq-safe write-lock, but readers can get non-irqsafe
|
| /linux/fs/nfsd/ |
| H A D | stats.h | 23 * These reply cache counters are updated once per RPC. Readers use 68 * These counters are updated on every READ request. Readers use 87 * These counters are updated on every WRITE request. Readers use
|
| /linux/fs/ |
| H A D | pipe.c | 73 * FIFOs and Pipes now generate SIGIO for both readers and writers. 503 !READ_ONCE(pipe->readers); in pipe_writable() 536 if (!pipe->readers) { in anon_pipe_write() 577 if (!pipe->readers) { in anon_pipe_write() 641 * space. We wake up any readers if necessary, and then in anon_pipe_write() 742 * see 3a34b13a88ca ("pipe: make pipe writes always wake up readers") in pipe_poll() 785 if (!pipe->readers) in pipe_poll() 814 pipe->readers--; in pipe_release() 819 if (!pipe->readers != !pipe->writers) { in pipe_release() 983 pipe->readers = pipe->writers = 1; in get_pipe_inode() [all …]
|
| /linux/tools/testing/selftests/kvm/include/ |
| H A D | userfaultfd_util.h | 29 /* Holds the write ends of the pipes for killing the readers. */ 31 pthread_t *readers; member
|
| /linux/arch/s390/include/asm/ |
| H A D | spinlock.h | 108 * Read-write spinlocks, allowing multiple readers 111 * NOTE! it is quite common to have readers in interrupts 114 * irq-safe write-lock, but readers can get non-irqsafe
|
| /linux/arch/arc/include/asm/ |
| H A D | spinlock.h | 75 * Read-write spinlocks, allowing multiple readers but only one writer. 142 * (can be starved for an indefinite time by readers). in arch_write_lock() 290 * Read-write spinlocks, allowing multiple readers but only one writer. 334 * (can be starved for an indefinite time by readers). in arch_write_trylock()
|
| /linux/Documentation/RCU/Design/Requirements/ |
| H A D | Requirements.rst | 20 updaters do not block readers, which means that RCU's read-side 22 can make useful forward progress concurrently with readers. However, all 23 this concurrency between RCU readers and updaters does raise the 24 question of exactly what RCU readers are doing, which in turn raises the 84 overhead to readers, for example: 106 readers, any instance of thread0() that loads a value of zero from 123 | progress concurrently with readers, but pre-existing readers will | 129 | First, if updaters do not wish to be blocked by readers, they can use | 132 | code does run concurrently with readers, whether pre-existing or not. | 258 linked data structure without disrupting RCU readers. The updater uses [all …]
|
| /linux/arch/powerpc/include/asm/ |
| H A D | simple_spinlock.h | 137 * Read-write spinlocks, allowing multiple readers 140 * NOTE! it is quite common to have readers in interrupts 143 * irq-safe write-lock, but readers can get non-irqsafe
|
| /linux/fs/btrfs/ |
| H A D | locking.h | 101 * the threads that hold the lock as readers signal the condition for the wait 118 * the condition and do the signaling acquire the lock as readers (shared 224 atomic_t readers; member
|
| /linux/Documentation/trace/ |
| H A D | ring-buffer-map.rst | 43 Concurrent readers (either another application mapping that ring-buffer or the 45 the ring-buffer and the output is unpredictable, just like concurrent readers on
|
| /linux/arch/parisc/include/asm/ |
| H A D | spinlock.h | 71 * Read-write spinlocks, allowing multiple readers but only one writer. 115 * (can be starved for an indefinite time by readers). in arch_write_trylock()
|