/linux/drivers/media/dvb-core/ |
H A D | dvb_ringbuffer.c | 106 smp_store_release(&rbuf->pread, smp_load_acquire(&rbuf->pwrite)); in dvb_ringbuffer_flush() 116 smp_store_release(&rbuf->pread, 0); in dvb_ringbuffer_reset() 118 smp_store_release(&rbuf->pwrite, 0); in dvb_ringbuffer_reset() 148 smp_store_release(&rbuf->pread, 0); in dvb_ringbuffer_read_user() 154 smp_store_release(&rbuf->pread, (rbuf->pread + todo) % rbuf->size); in dvb_ringbuffer_read_user() 173 smp_store_release(&rbuf->pread, 0); in dvb_ringbuffer_read() 178 smp_store_release(&rbuf->pread, (rbuf->pread + todo) % rbuf->size); in dvb_ringbuffer_read() 198 smp_store_release(&rbuf->pwrite, 0); in dvb_ringbuffer_write() 202 smp_store_release(&rbuf->pwrite, (rbuf->pwrite + todo) % rbuf->size); in dvb_ringbuffer_write() 227 smp_store_release(&rbuf->pwrite, 0); in dvb_ringbuffer_write_user() [all …]
|
/linux/Documentation/litmus-tests/locking/ |
H A D | DCL-fixed.litmus | 7 * reliable given proper use of smp_load_acquire() and smp_store_release() 28 smp_store_release(flag, 1); 47 smp_store_release(flag, 1);
|
/linux/include/asm-generic/ |
H A D | barrier.h | 171 #ifndef smp_store_release 172 #define smp_store_release(p, v) do { kcsan_release(); __smp_store_release(p, v); } while (0) macro 193 #ifndef smp_store_release 194 #define smp_store_release(p, v) \ macro
|
/linux/Documentation/translations/zh_CN/core-api/ |
H A D | circular-buffers.rst | 154 smp_store_release(buffer->head, 191 smp_store_release(buffer->tail, 203 用smp_store_release()来写入线程的索引。这记录了我们正在写入可以并发读取的内容的事
|
/linux/drivers/infiniband/sw/rxe/ |
H A D | rxe_queue.h | 197 smp_store_release(&q->buf->producer_index, prod); in queue_advance_producer() 204 smp_store_release(&q->buf->producer_index, prod); in queue_advance_producer() 226 smp_store_release(&q->buf->consumer_index, cons); in queue_advance_consumer() 245 smp_store_release(&q->buf->consumer_index, cons); in queue_advance_consumer()
|
/linux/tools/memory-model/litmus-tests/ |
H A D | MP+pooncerelease+poacquireonce.litmus | 6 * This litmus test demonstrates that smp_store_release() and 16 smp_store_release(flag, 1);
|
H A D | WRC+pooncerelease+fencermbonceonce+Once.litmus | 9 * specifically, this litmus test is forbidden because smp_store_release() 25 smp_store_release(y, 1);
|
H A D | ISA2+pooncerelease+poacquirerelease+poacquireonce.litmus | 19 smp_store_release(y, 1); 27 smp_store_release(z, 1);
|
H A D | Z6.0+pooncerelease+poacquirerelease+fencembonceonce.litmus | 22 smp_store_release(y, 1); 30 smp_store_release(z, 1);
|
/linux/tools/include/asm/ |
H A D | barrier.h | 50 #ifndef smp_store_release 51 # define smp_store_release(p, v) \ macro
|
/linux/fs/afs/ |
H A D | cell.c | 202 smp_store_release(&cell->dns_lookup_count, 1); /* vs source/status */ in afs_alloc_cell() 480 smp_store_release(&cell->dns_lookup_count, in afs_update_cell() 742 smp_store_release(&cell->state, AFS_CELL_REMOVED); in afs_manage_cell() 751 smp_store_release(&cell->state, AFS_CELL_UNSET); in afs_manage_cell() 756 smp_store_release(&cell->state, AFS_CELL_ACTIVATING); in afs_manage_cell() 765 smp_store_release(&cell->state, AFS_CELL_ACTIVE); in afs_manage_cell() 778 smp_store_release(&cell->state, AFS_CELL_DEACTIVATING); in afs_manage_cell() 786 smp_store_release(&cell->state, AFS_CELL_INACTIVE); in afs_manage_cell() 803 smp_store_release(&cell->state, AFS_CELL_FAILED); /* vs error */ in afs_manage_cell() 808 smp_store_release(&cell->state, AFS_CELL_ACTIVE); in afs_manage_cell()
|
/linux/net/rxrpc/ |
H A D | call_accept.c | 78 smp_store_release(&b->peer_backlog_head, in rxrpc_service_prealloc_one() 91 smp_store_release(&b->conn_backlog_head, in rxrpc_service_prealloc_one() 146 smp_store_release(&b->call_backlog_head, (call_head + 1) & (size - 1)); in rxrpc_service_prealloc_one() 279 smp_store_release(&b->peer_backlog_tail, in rxrpc_alloc_incoming_call() 289 smp_store_release(&b->conn_backlog_tail, in rxrpc_alloc_incoming_call() 303 smp_store_release(&b->call_backlog_tail, in rxrpc_alloc_incoming_call()
|
/linux/drivers/net/netdevsim/ |
H A D | bus.c | 181 smp_store_release(&nsim_bus_dev->init, true); in new_device_store() 440 smp_store_release(&nsim_bus_dev->init, false); in nsim_bus_dev_new() 460 smp_store_release(&nsim_bus_dev->init, false); in nsim_bus_dev_del() 483 smp_store_release(&nsim_bus_enable, true); in nsim_bus_init() 496 smp_store_release(&nsim_bus_enable, false); in nsim_bus_exit()
|
/linux/kernel/kcsan/ |
H A D | selftest.c | 150 KCSAN_CHECK_READ_BARRIER(smp_store_release(&test_var, 0)); in test_barrier() 179 KCSAN_CHECK_WRITE_BARRIER(smp_store_release(&test_var, 0)); in test_barrier() 211 KCSAN_CHECK_RW_BARRIER(smp_store_release(&test_var, 0)); in test_barrier()
|
/linux/tools/memory-model/Documentation/ |
H A D | ordering.txt | 261 Release operations include smp_store_release(), atomic_set_release(), 266 For example, use of smp_store_release() saves a line compared to the 270 smp_store_release(&y, 1); 272 More important, smp_store_release() makes it easier to connect up the 274 by the smp_store_release(), in this case "y", will normally be used in 286 smp_store_release(), which still provides the needed ordering of "x" 287 against "y". On x86, the version using smp_store_release() might compile 295 smp_store_release(), but also atomic_set_release(), and 299 smp_store_release() except that: (1) It takes the pointer to 330 As with smp_store_release(), this also makes it easier to connect [all …]
|
H A D | recipes.txt | 216 Use of smp_store_release() and smp_load_acquire() is one way to force 223 smp_store_release(&y, 1); 232 The smp_store_release() macro orders any prior accesses against the 246 use of smp_store_release() and smp_load_acquire(), except that both 273 smp_store_release(), but the rcu_dereference() macro orders the load only 290 It is usually better to use smp_store_release() instead of smp_wmb() 416 smp_store_release(&y, 1); 422 smp_store_release(&z, 1); 445 smp_store_release(&y, 1); 451 smp_store_release(&z, 1);
|
H A D | locking.txt | 115 One way to fix this is to use smp_load_acquire() and smp_store_release() 127 smp_store_release(&flag, 1); 137 problem. The smp_store_release() guarantees that its store will be 139 The smp_store_release() pairs with the smp_load_acquire(), thus ensuring 145 this case, via the smp_load_acquire() and the smp_store_release().
|
/linux/arch/mips/include/asm/ |
H A D | spinlock.h | 25 smp_store_release(&lock->locked, 0); in queued_spin_unlock()
|
/linux/arch/arm/include/asm/ |
H A D | mcs_spinlock.h | 19 smp_store_release(lock, 1); \
|
/linux/scripts/atomic/fallbacks/ |
H A D | set_release | 3 smp_store_release(&(v)->counter, i);
|
/linux/net/unix/ |
H A D | unix_bpf.c | 129 smp_store_release(&unix_dgram_prot_saved, ops); in unix_dgram_bpf_check_needs_rebuild() 141 smp_store_release(&unix_stream_prot_saved, ops); in unix_stream_bpf_check_needs_rebuild()
|
/linux/arch/x86/kernel/acpi/ |
H A D | madt_wakeup.c | 50 smp_store_release(&acpi_mp_wake_mailbox->command, in acpi_mp_cpu_die() 202 smp_store_release(&acpi_mp_wake_mailbox->command, in acpi_wakeup_cpu()
|
/linux/tools/arch/s390/include/asm/ |
H A D | barrier.h | 31 #define smp_store_release(p, v) \ macro
|
/linux/tools/arch/powerpc/include/asm/ |
H A D | barrier.h | 33 #define smp_store_release(p, v) \ macro
|
/linux/tools/arch/sparc/include/asm/ |
H A D | barrier_64.h | 43 #define smp_store_release(p, v) \ macro
|