| /linux/Documentation/litmus-tests/locking/ |
| H A D | DCL-fixed.litmus | 7 * reliable given proper use of smp_load_acquire() and smp_store_release() 22 r0 = smp_load_acquire(flag); 41 r0 = smp_load_acquire(flag);
|
| /linux/include/linux/ |
| H A D | lwq.h | 51 return smp_load_acquire(&q->ready) == NULL && llist_empty(&q->new); in lwq_empty() 104 smp_load_acquire(&q->ready) == NULL; in lwq_enqueue() 122 smp_load_acquire(&q->ready) == NULL; in lwq_enqueue_batch()
|
| H A D | netfs.h | 510 remote_i_size = smp_load_acquire(&ictx->_remote_i_size); in netfs_read_remote_i_size() 585 zero_point = smp_load_acquire(&ictx->_zero_point); in netfs_read_zero_point() 668 *i_size = smp_load_acquire(&inode->i_size); in netfs_read_sizes() 670 *remote_i_size = smp_load_acquire(&ictx->_remote_i_size); in netfs_read_sizes() 672 *zero_point = smp_load_acquire(&ictx->_zero_point); in netfs_read_sizes()
|
| /linux/include/asm-generic/ |
| H A D | barrier.h | 175 #ifndef smp_load_acquire 176 #define smp_load_acquire(p) __smp_load_acquire(p) macro 201 #ifndef smp_load_acquire 202 #define smp_load_acquire(p) \ macro
|
| /linux/Documentation/translations/zh_CN/core-api/ |
| H A D | circular-buffers.rst | 180 unsigned long head = smp_load_acquire(buffer->head); 200 请注意,使用READ_ONCE()和smp_load_acquire()来读取反向(head)索引。这可以防止编译 202 的。smp_load_acquire()还可以强制CPU对后续的内存引用进行排序。类似地,两种算法都使
|
| /linux/drivers/infiniband/sw/rxe/ |
| H A D | rxe_queue.h | 108 prod = smp_load_acquire(&q->buf->producer_index); in queue_get_producer() 120 prod = smp_load_acquire(&q->buf->producer_index); in queue_get_producer() 139 cons = smp_load_acquire(&q->buf->consumer_index); in queue_get_consumer() 143 cons = smp_load_acquire(&q->buf->consumer_index); in queue_get_consumer()
|
| /linux/drivers/net/wireguard/ |
| H A D | queueing.c | 82 struct sk_buff *tail = queue->tail, *next = smp_load_acquire(&NEXT(tail)); in wg_prev_queue_dequeue() 89 next = smp_load_acquire(&NEXT(next)); in wg_prev_queue_dequeue() 99 next = smp_load_acquire(&NEXT(tail)); in wg_prev_queue_dequeue()
|
| /linux/tools/memory-model/litmus-tests/ |
| H A D | MP+pooncerelease+poacquireonce.litmus | 7 * smp_load_acquire() provide sufficient ordering for the message-passing 24 r0 = smp_load_acquire(flag);
|
| H A D | MP+polockonce+poacquiresilsil.litmus | 9 * the smp_load_acquire() executed before the lock was acquired (loosely 28 r1 = smp_load_acquire(x);
|
| H A D | MP+polockmbonce+poacquiresilsil.litmus | 9 * returns false and the second true, we know that the smp_load_acquire() 29 r1 = smp_load_acquire(x);
|
| H A D | ISA2+pooncerelease+poacquirerelease+poacquireonce.litmus | 26 r0 = smp_load_acquire(y); 35 r0 = smp_load_acquire(z);
|
| H A D | S+fencewmbonceonce+poacquireonce.litmus | 23 r0 = smp_load_acquire(y);
|
| /linux/tools/include/asm/ |
| H A D | barrier.h | 58 #ifndef smp_load_acquire 59 # define smp_load_acquire(p) \ macro
|
| /linux/lib/ |
| H A D | llist.c | 35 entry = smp_load_acquire(&head->first); in llist_del_first() 63 entry = smp_load_acquire(&head->first); in llist_del_first_this()
|
| /linux/arch/arm/include/asm/ |
| H A D | mcs_spinlock.h | 13 while (!(smp_load_acquire(lock))) \
|
| /linux/scripts/atomic/fallbacks/ |
| H A D | read_acquire | 5 ret = smp_load_acquire(&(v)->counter);
|
| /linux/tools/memory-model/Documentation/ |
| H A D | locking.txt | 120 One way to fix this is to use smp_load_acquire() and smp_store_release() 126 r0 = smp_load_acquire(&flag); 140 The smp_load_acquire() guarantees that its load from "flags" will 144 The smp_store_release() pairs with the smp_load_acquire(), thus ensuring 150 this case, via the smp_load_acquire() and the smp_store_release().
|
| H A D | recipes.txt | 220 Use of smp_store_release() and smp_load_acquire() is one way to force 232 r0 = smp_load_acquire(&y); 237 store, while the smp_load_acquire macro orders the load against any 250 use of smp_store_release() and smp_load_acquire(), except that both 295 and to use smp_load_acquire() instead of smp_rmb(). However, the older 425 r0 = smp_load_acquire(y); 431 r1 = smp_load_acquire(z); 439 example, ordering would still be preserved if CPU1()'s smp_load_acquire() 454 r0 = smp_load_acquire(y);
|
| /linux/net/unix/ |
| H A D | unix_bpf.c | 126 if (unlikely(ops != smp_load_acquire(&unix_dgram_prot_saved))) { in unix_dgram_bpf_check_needs_rebuild() 138 if (unlikely(ops != smp_load_acquire(&unix_stream_prot_saved))) { in unix_stream_bpf_check_needs_rebuild()
|
| /linux/tools/arch/s390/include/asm/ |
| H A D | barrier.h | 37 #define smp_load_acquire(p) \ macro
|
| /linux/tools/arch/powerpc/include/asm/ |
| H A D | barrier.h | 39 #define smp_load_acquire(p) \ macro
|
| /linux/tools/arch/sparc/include/asm/ |
| H A D | barrier_64.h | 49 #define smp_load_acquire(p) \ macro
|
| /linux/tools/include/linux/ |
| H A D | ring_buffer.h | 59 return smp_load_acquire(&base->data_head); in ring_buffer_read_head()
|
| /linux/tools/arch/x86/include/asm/ |
| H A D | barrier.h | 39 #define smp_load_acquire(p) \ macro
|
| /linux/tools/arch/riscv/include/asm/ |
| H A D | barrier.h | 32 #define smp_load_acquire(p) \ macro
|