Home
last modified time | relevance | path

Searched refs:readers (Results 1 – 25 of 104) sorted by relevance

12345

/Linux-v6.6/kernel/locking/
Drwbase_rt.c61 for (r = atomic_read(&rwb->readers); r < 0;) { in rwbase_read_trylock()
62 if (likely(atomic_try_cmpxchg_acquire(&rwb->readers, &r, r + 1))) in rwbase_read_trylock()
122 atomic_inc(&rwb->readers); in __rwbase_read_lock()
173 if (unlikely(atomic_dec_and_test(&rwb->readers))) in rwbase_read_unlock()
186 (void)atomic_add_return_release(READER_BIAS - bias, &rwb->readers); in __rwbase_write_unlock()
219 if (!atomic_read_acquire(&rwb->readers)) { in __rwbase_write_trylock()
220 atomic_set(&rwb->readers, WRITER_BIAS); in __rwbase_write_trylock()
238 atomic_sub(READER_BIAS, &rwb->readers); in rwbase_write_lock()
280 atomic_sub(READER_BIAS, &rwb->readers); in rwbase_write_trylock()
Drwsem.c809 int readers = count >> RWSEM_READER_SHIFT; in rwsem_rspin_threshold() local
812 if (readers > 30) in rwsem_rspin_threshold()
813 readers = 30; in rwsem_rspin_threshold()
814 delta = (20 + readers) * NSEC_PER_USEC / 2; in rwsem_rspin_threshold()
1507 int count = atomic_read(&sem->rwbase.readers); in is_rwsem_reader_owned()
/Linux-v6.6/include/linux/
Drwbase_rt.h12 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) > 0; in rw_base_is_contended()
Drwlock_types.h59 atomic_t readers; member
/Linux-v6.6/fs/btrfs/
Dlocking.c331 atomic_set(&lock->readers, 0); in btrfs_drew_lock_init()
340 if (atomic_read(&lock->readers)) in btrfs_drew_try_write_lock()
347 if (atomic_read(&lock->readers)) { in btrfs_drew_try_write_lock()
360 wait_event(lock->pending_writers, !atomic_read(&lock->readers)); in btrfs_drew_write_lock()
372 atomic_inc(&lock->readers); in btrfs_drew_read_lock()
391 if (atomic_dec_and_test(&lock->readers)) in btrfs_drew_read_unlock()
Dsubpage.c174 atomic_set(&ret->readers, 0); in btrfs_alloc_subpage()
249 atomic_add(nbits, &subpage->readers); in btrfs_subpage_start_reader()
262 ASSERT(atomic_read(&subpage->readers) >= nbits); in btrfs_subpage_end_reader()
263 last = atomic_sub_and_test(nbits, &subpage->readers); in btrfs_subpage_end_reader()
303 ASSERT(atomic_read(&subpage->readers) == 0); in btrfs_subpage_start_writer()
/Linux-v6.6/drivers/misc/cardreader/
DKconfig9 Alcor Micro card readers support access to many types of memory cards,
20 Realtek card readers support access to many types of memory cards,
29 Select this option to get support for Realtek USB 2.0 card readers
/Linux-v6.6/Documentation/RCU/
Drcu.rst10 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
Dchecklist.rst30 One final exception is where RCU readers are used to prevent
40 RCU does allow *readers* to run (almost) naked, but *writers* must
85 The whole point of RCU is to permit readers to run without
86 any locks or atomic operations. This means that readers will
99 locks (that are acquired by both readers and writers)
100 that guard per-element state. Fields that the readers
106 c. Make updates appear atomic to readers. For example,
110 appear to be atomic to RCU readers, nor will sequences
118 d. Carefully order the updates and the reads so that readers
161 is common to readers and updaters. However, lockdep
[all …]
DwhatisRCU.rst56 Section 1, though most readers will profit by reading this section at
79 new versions of these data items), and can run concurrently with readers.
81 readers is the semantics of modern CPUs guarantee that readers will see
85 removal phase. Because reclaiming data items can disrupt any readers
87 not start until readers no longer hold references to those data items.
91 reclamation phase until all readers active during the removal phase have
93 callback that is invoked after they finish. Only readers that are active
101 readers cannot gain a reference to it.
103 b. Wait for all previous readers to complete their RCU read-side
106 c. At this point, there cannot be any readers who hold references
[all …]
Dlockdep.rst43 invoked by both RCU readers and updaters.
47 is invoked by both RCU-bh readers and updaters.
51 is invoked by both RCU-sched readers and updaters.
55 is invoked by both SRCU readers and updaters.
DlistRCU.rst54 ``tasklist_lock``. To prevent readers from noticing changes in the list
58 any readers traversing the list will see valid ``p->tasks.next`` pointers
62 all existing readers finish, which guarantees that the ``task_struct``
64 of all RCU readers that might possibly have a reference to that object.
210 need for writers to exclude readers.
217 readers to fail spectacularly.
219 So, when readers can tolerate stale data and when entries are either added or
/Linux-v6.6/drivers/misc/ibmasm/
Devent.c30 list_for_each_entry(reader, &sp->event_buffer->readers, node) in wake_up_event_readers()
123 list_add(&reader->node, &sp->event_buffer->readers); in ibmasm_event_reader_register()
153 INIT_LIST_HEAD(&buffer->readers); in ibmasm_event_buffer_init()
/Linux-v6.6/Documentation/locking/
Dlockdep-design.rst405 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 …]
Dseqlock.rst9 lockless readers (read-only retry loops), and no writer starvation. They
23 is odd and indicates to the readers that an update is in progress. At
25 even again which lets readers make progress.
153 from interruption by readers. This is typically the case when the read
195 1. Normal Sequence readers which never block a writer but they must
206 2. Locking readers which will wait if a writer or another locking reader
218 according to a passed marker. This is used to avoid lockless readers
Dlocktypes.rst95 readers.
135 rw_semaphore is a multiple readers and single writer lock mechanism.
141 exist special-purpose interfaces that allow non-owner release for readers.
151 readers, a preempted low-priority reader will continue holding its lock,
152 thus starving even high-priority writers. In contrast, because readers
155 writer from starving readers.
299 rwlock_t is a multiple readers and single writer lock mechanism.
314 readers, a preempted low-priority reader will continue holding its lock,
315 thus starving even high-priority writers. In contrast, because readers
318 preventing that writer from starving readers.
/Linux-v6.6/fs/
Dpipe.c413 !READ_ONCE(pipe->readers); in pipe_writable()
434 if (!pipe->readers) { in pipe_write()
482 if (!pipe->readers) { in pipe_write()
693 if (!pipe->readers) in pipe_poll()
722 pipe->readers--; in pipe_release()
727 if (!pipe->readers != !pipe->writers) { in pipe_release()
888 pipe->readers = pipe->writers = 1; in get_pipe_inode()
1143 if (pipe->readers++ == 0) in fifo_open()
1165 if (!is_pipe && (filp->f_flags & O_NONBLOCK) && !pipe->readers) in fifo_open()
1172 if (!is_pipe && !pipe->readers) { in fifo_open()
[all …]
Dsplice.c209 if (unlikely(!pipe->readers)) { in splice_to_pipe()
252 if (unlikely(!pipe->readers)) { in add_to_pipe()
1041 pipe->readers = 1; in splice_direct_to_actor()
1205 if (unlikely(!pipe->readers)) { in wait_for_space()
1650 if (!pipe->readers) { in opipe_prep()
1709 if (!opipe->readers) { in splice_pipe_to_pipe()
1833 if (!opipe->readers) { in link_pipe()
/Linux-v6.6/drivers/soc/aspeed/
Daspeed-p2a-ctrl.c65 u32 readers; member
192 ctrl->readers += 1; in aspeed_p2a_ioctl()
275 priv->parent->readers -= priv->read; in aspeed_p2a_release()
299 if (!open_regions && priv->parent->readers == 0) in aspeed_p2a_release()
/Linux-v6.6/drivers/hid/
Dhid-roccat.c47 struct list_head readers; member
191 list_add_tail(&reader->node, &device->readers); in roccat_open()
270 list_for_each_entry(reader, &device->readers, node) { in roccat_report_event()
339 INIT_LIST_HEAD(&device->readers); in roccat_connect()
/Linux-v6.6/drivers/iio/
DTODO14 to state struct and using property handlers and readers.
/Linux-v6.6/drivers/mtd/ubi/
Dkapi.c163 vol->readers += 1; in ubi_open_volume()
173 if (vol->exclusive || vol->writers || vol->readers || in ubi_open_volume()
337 vol->readers -= 1; in ubi_close_volume()
/Linux-v6.6/Documentation/driver-api/media/
Ddtv-common.rst43 Two or more readers must be locked against each other.
/Linux-v6.6/drivers/usb/storage/
DKconfig18 and card readers.
39 for Realtek RTS51xx USB card readers.
51 Support for certain Datafab CompactFlash readers.
/Linux-v6.6/Documentation/RCU/Design/Requirements/
DRequirements.rst20 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 …]

12345