/Linux-v5.10/arch/riscv/include/asm/ |
D | atomic.h | 56 void atomic##prefix##_##op(c_type i, atomic##prefix##_t *v) \ 90 c_type atomic##prefix##_fetch_##op##_relaxed(c_type i, \ in ATOMIC_OPS() 91 atomic##prefix##_t *v) \ in ATOMIC_OPS() 102 c_type atomic##prefix##_fetch_##op(c_type i, atomic##prefix##_t *v) \ 115 c_type atomic##prefix##_##op##_return_relaxed(c_type i, \ 116 atomic##prefix##_t *v) \ 118 return atomic##prefix##_fetch_##op##_relaxed(i, v) c_op I; \ 121 c_type atomic##prefix##_##op##_return(c_type i, atomic##prefix##_t *v) \ 123 return atomic##prefix##_fetch_##op(i, v) c_op I; \ 247 c_t atomic##prefix##_xchg_relaxed(atomic##prefix##_t *v, c_t n) \ [all …]
|
/Linux-v5.10/scripts/atomic/ |
D | gen-atomics.sh | 11 gen-atomic-instrumented.sh asm-generic/atomic-instrumented.h 12 gen-atomic-long.sh asm-generic/atomic-long.h 13 gen-atomic-fallback.sh linux/atomic-arch-fallback.h arch_ 14 gen-atomic-fallback.sh linux/atomic-fallback.h
|
D | gen-atomic-long.sh | 6 . ${ATOMICDIR}/atomic-tbl.sh 13 local atomic="$1"; shift 17 printf "($(gen_param_type "${arg}" "${int}" "${atomic}"))" 24 local atomic="$1"; shift 27 local cast="$(gen_cast "$1" "${int}" "${atomic}")" 40 local atomic="$1"; shift 45 local argscast="$(gen_args_cast "${int}" "${atomic}" "$@")" 52 ${retstmt}${atomic}_${name}(${argscast});
|
D | gen-atomic-instrumented.sh | 6 . ${ATOMICDIR}/atomic-tbl.sh 48 local atomic="$1"; shift 54 local atomicname="arch_${atomic}_${pfx}${name}${sfx}${order}" 80 local atomic="$1"; shift 83 local atomicname="${atomic}_${pfx}${name}${sfx}${order}" 85 local guard="$(gen_guard "${meta}" "${atomic}" "${pfx}" "${name}" "${sfx}" "${order}")" 88 local params="$(gen_params "${int}" "${atomic}" "$@")" 145 * This file provides wrappers with KASAN instrumentation for atomic operations.
|
D | atomic-tbl.sh | 98 local atomic="$1"; shift 103 v) type="${atomic}_t *";; 104 cv) type="const ${atomic}_t *";; 115 local atomic="$1"; shift 117 local type="$(gen_param_type "${arg}" "${int}" "${atomic}")" 126 local atomic="$1"; shift 129 gen_param "$1" "${int}" "${atomic}"
|
D | gen-atomic-fallback.sh | 7 . ${ATOMICDIR}/atomic-tbl.sh 19 local atomic="$1"; shift 22 local atomicname="${arch}${atomic}_${pfx}${name}${sfx}${order}" 26 local params="$(gen_params "${int}" "${atomic}" "$@")" 69 local atomic="$2" 71 local basename="${arch}${atomic}_${pfx}${name}${sfx}" 84 local atomic="$2" 86 local basename="${arch}${atomic}_${pfx}${name}${sfx}" 131 printf "#endif /* ${arch}${atomic}_${pfx}${name}${sfx} */\n\n"
|
D | check-atomics.sh | 17 asm-generic/atomic-instrumented.h 18 asm-generic/atomic-long.h 19 linux/atomic-arch-fallback.h 20 linux/atomic-fallback.h
|
/Linux-v5.10/lib/ |
D | dec_and_lock.c | 21 int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock) in _atomic_dec_and_lock() argument 24 if (atomic_add_unless(atomic, -1, 1)) in _atomic_dec_and_lock() 29 if (atomic_dec_and_test(atomic)) in _atomic_dec_and_lock() 37 int _atomic_dec_and_lock_irqsave(atomic_t *atomic, spinlock_t *lock, in _atomic_dec_and_lock_irqsave() argument 41 if (atomic_add_unless(atomic, -1, 1)) in _atomic_dec_and_lock_irqsave() 46 if (atomic_dec_and_test(atomic)) in _atomic_dec_and_lock_irqsave()
|
D | atomic64_test.c | 22 atomic##bit##_set(&v, v0); \ 24 atomic##bit##_##op(val, &v); \ 26 WARN(atomic##bit##_read(&v) != r, "%Lx != %Lx\n", \ 27 (unsigned long long)atomic##bit##_read(&v), \ 46 atomic##bit##_set(&v, v0); \ 49 BUG_ON(atomic##bit##_##op(val, &v) != r); \ 50 BUG_ON(atomic##bit##_read(&v) != r); \ 55 atomic##bit##_set(&v, v0); \ 58 BUG_ON(atomic##bit##_##op(val, &v) != v0); \ 59 BUG_ON(atomic##bit##_read(&v) != r); \ [all …]
|
/Linux-v5.10/net/rds/ |
D | rdma.c | 870 || rm->atomic.op_active) in rds_cmsg_atomic() 878 rm->atomic.op_type = RDS_ATOMIC_TYPE_FADD; in rds_cmsg_atomic() 879 rm->atomic.op_m_fadd.add = args->fadd.add; in rds_cmsg_atomic() 880 rm->atomic.op_m_fadd.nocarry_mask = 0; in rds_cmsg_atomic() 883 rm->atomic.op_type = RDS_ATOMIC_TYPE_FADD; in rds_cmsg_atomic() 884 rm->atomic.op_m_fadd.add = args->m_fadd.add; in rds_cmsg_atomic() 885 rm->atomic.op_m_fadd.nocarry_mask = args->m_fadd.nocarry_mask; in rds_cmsg_atomic() 888 rm->atomic.op_type = RDS_ATOMIC_TYPE_CSWP; in rds_cmsg_atomic() 889 rm->atomic.op_m_cswp.compare = args->cswp.compare; in rds_cmsg_atomic() 890 rm->atomic.op_m_cswp.swap = args->cswp.swap; in rds_cmsg_atomic() [all …]
|
/Linux-v5.10/scripts/atomic/fallbacks/ |
D | fetch_add_unless | 3 * ${arch}${atomic}_fetch_add_unless - add unless the number is already a given value 4 * @v: pointer of type ${atomic}_t 12 ${arch}${atomic}_fetch_add_unless(${atomic}_t *v, ${int} a, ${int} u) 14 ${int} c = ${arch}${atomic}_read(v); 19 } while (!${arch}${atomic}_try_cmpxchg(v, &c, c + a));
|
D | dec_and_test | 3 * ${arch}${atomic}_dec_and_test - decrement and test 4 * @v: pointer of type ${atomic}_t 11 ${arch}${atomic}_dec_and_test(${atomic}_t *v) 13 return ${arch}${atomic}_dec_return(v) == 0;
|
D | inc_and_test | 3 * ${arch}${atomic}_inc_and_test - increment and test 4 * @v: pointer of type ${atomic}_t 11 ${arch}${atomic}_inc_and_test(${atomic}_t *v) 13 return ${arch}${atomic}_inc_return(v) == 0;
|
D | inc_not_zero | 3 * ${arch}${atomic}_inc_not_zero - increment unless the number is zero 4 * @v: pointer of type ${atomic}_t 10 ${arch}${atomic}_inc_not_zero(${atomic}_t *v) 12 return ${arch}${atomic}_add_unless(v, 1, 0);
|
D | add_negative | 3 * ${arch}${atomic}_add_negative - add and test if negative 5 * @v: pointer of type ${atomic}_t 12 ${arch}${atomic}_add_negative(${int} i, ${atomic}_t *v) 14 return ${arch}${atomic}_add_return(i, v) < 0;
|
D | sub_and_test | 3 * ${arch}${atomic}_sub_and_test - subtract value from variable and test result 5 * @v: pointer of type ${atomic}_t 12 ${arch}${atomic}_sub_and_test(${int} i, ${atomic}_t *v) 14 return ${arch}${atomic}_sub_return(i, v) == 0;
|
D | add_unless | 3 * ${arch}${atomic}_add_unless - add unless the number is already a given value 4 * @v: pointer of type ${atomic}_t 12 ${arch}${atomic}_add_unless(${atomic}_t *v, ${int} a, ${int} u) 14 return ${arch}${atomic}_fetch_add_unless(v, a, u) != u;
|
D | dec_unless_positive | 3 ${arch}${atomic}_dec_unless_positive(${atomic}_t *v) 5 ${int} c = ${arch}${atomic}_read(v); 10 } while (!${arch}${atomic}_try_cmpxchg(v, &c, c - 1));
|
D | inc_unless_negative | 3 ${arch}${atomic}_inc_unless_negative(${atomic}_t *v) 5 ${int} c = ${arch}${atomic}_read(v); 10 } while (!${arch}${atomic}_try_cmpxchg(v, &c, c + 1));
|
D | dec_if_positive | 3 ${arch}${atomic}_dec_if_positive(${atomic}_t *v) 5 ${int} dec, c = ${arch}${atomic}_read(v); 11 } while (!${arch}${atomic}_try_cmpxchg(v, &c, dec));
|
/Linux-v5.10/Documentation/ |
D | atomic_bitops.txt | 5 While our bitmap_{}() functions are non-atomic, we have a number of operations 6 operating on single bits in a bitmap that are atomic. 18 RMW atomic operations without return value: 23 RMW atomic operations with return value: 33 All RMW atomic operations have a '__' prefixed variant which is non-atomic. 39 Non-atomic ops: 69 Since a platform only has a single means of achieving atomic operations
|
/Linux-v5.10/sound/synth/emux/ |
D | emux_oss.c | 27 void *private, int atomic, int hop); 30 int cmd, unsigned char *event, int atomic, int hop); 32 int cmd, unsigned char *event, int atomic, int hop); 34 int ch, int param, int val, int atomic, int hop); 288 int atomic, int hop) in snd_emux_event_oss_input() argument 301 return snd_emux_event_input(ev, direct, private_data, atomic, hop); in snd_emux_event_oss_input() 309 emuspec_control(emu, p, cmd, data, atomic, hop); in snd_emux_event_oss_input() 311 gusspec_control(emu, p, cmd, data, atomic, hop); in snd_emux_event_oss_input() 321 unsigned char *event, int atomic, int hop) in emuspec_control() argument 361 fake_event(emu, port, voice, MIDI_CTL_ALL_NOTES_OFF, 0, atomic, hop); in emuspec_control() [all …]
|
/Linux-v5.10/Documentation/core-api/ |
D | atomic_ops.rst | 8 maintainers on how to implement atomic counter, bitops, and spinlock 41 The initializer is atomic in that the return values of the atomic operations 62 The setting is atomic in that the return values of the atomic operations by 73 The read is atomic in that the return value is guaranteed to be one of the 180 locks, or atomic operations if variable a can change at runtime! 186 Now, we move onto the atomic operation interfaces typically implemented with 215 and after the atomic operation calls are strongly ordered with respect 216 to the atomic operation itself. 219 before and after the atomic operation. 221 If the atomic instructions used in an implementation provide explicit [all …]
|
/Linux-v5.10/sound/core/seq/ |
D | seq_queue.c | 237 void snd_seq_check_queue(struct snd_seq_queue *q, int atomic, int hop) in snd_seq_check_queue() argument 264 snd_seq_dispatch_event(cell, atomic, hop); in snd_seq_check_queue() 273 snd_seq_dispatch_event(cell, atomic, hop); in snd_seq_check_queue() 289 int snd_seq_enqueue_event(struct snd_seq_event_cell *cell, int atomic, int hop) in snd_seq_enqueue_event() argument 333 snd_seq_check_queue(q, atomic, hop); in snd_seq_enqueue_event() 641 int atomic, int hop) in queue_broadcast_event() argument 656 snd_seq_kernel_client_dispatch(SNDRV_SEQ_CLIENT_SYSTEM, &sev, atomic, hop); in queue_broadcast_event() 665 int atomic, int hop) in snd_seq_queue_process_event() argument 672 queue_broadcast_event(q, ev, atomic, hop); in snd_seq_queue_process_event() 677 queue_broadcast_event(q, ev, atomic, hop); in snd_seq_queue_process_event() [all …]
|
/Linux-v5.10/drivers/firmware/ |
D | qcom_scm-smc.c | 56 struct arm_smccc_res *res, bool atomic) in __scm_smc_do() argument 60 if (atomic) { in __scm_smc_do() 81 struct qcom_scm_res *res, bool atomic) in scm_smc_call() argument 88 gfp_t flag = atomic ? GFP_ATOMIC : GFP_KERNEL; in scm_smc_call() 89 u32 smccc_call_type = atomic ? ARM_SMCCC_FAST_CALL : ARM_SMCCC_STD_CALL; in scm_smc_call() 137 __scm_smc_do(&smc, &smc_res, atomic); in scm_smc_call()
|