| /linux/lib/ |
| H A 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() 53 int _atomic_dec_and_raw_lock(atomic_t *atomic, raw_spinlock_t *lock) in _atomic_dec_and_raw_lock() argument 56 if (atomic_add_unless(atomic, -1, 1)) in _atomic_dec_and_raw_lock() 61 if (atomic_dec_and_test(atomic)) in _atomic_dec_and_raw_lock() 68 int _atomic_dec_and_raw_lock_irqsave(atomic_t *atomic, raw_spinlock_t *lock, in _atomic_dec_and_raw_lock_irqsave() argument [all …]
|
| /linux/scripts/atomic/ |
| H A D | gen-atomics.sh | 11 gen-atomic-instrumented.sh linux/atomic/atomic-instrumented.h 12 gen-atomic-long.sh linux/atomic/atomic-long.h 13 gen-atomic-fallback.sh linux/atomic/atomic-arch-fallback.h 14 gen-rust-atomic-helpers.sh ../rust/helpers/atomic.c
|
| H A D | atomic-tbl.sh | 117 local atomic="$1"; shift 122 v) type="${atomic}_t *";; 123 cv) type="const ${atomic}_t *";; 134 local atomic="$1"; shift 136 local type="$(gen_param_type "${arg}" "${int}" "${atomic}")" 145 local atomic="$1"; shift 148 gen_param "$1" "${int}" "${atomic}" 195 local atomic="$1"; shift 198 local atomicname="${atomic}_${pfx}${name}${sfx}${order}" 202 local params="$(gen_params "${int}" "${atomic}" "$@")" [all …]
|
| H A D | gen-atomic-fallback.sh | 6 . ${ATOMICDIR}/atomic-tbl.sh 17 local atomic="$1"; shift 22 local params="$(gen_params "${int}" "${atomic}" "$@")" 63 local atomic="$1"; shift 66 local atomicname="${atomic}_${pfx}${name}${sfx}${order}" 67 local basename="${atomic}_${pfx}${name}${sfx}" 73 local params="$(gen_params "${int}" "${atomic}" "$@")" 76 gen_kerneldoc "raw_" "${meta}" "${pfx}" "${name}" "${sfx}" "${order}" "${atomic}" "${int}" "$@" 101 gen_order_fallback "${meta}" "${pfx}" "${name}" "${sfx}" "${order}" "${atomic}" "${int}" "$@" 112 gen_proto_fallback "${meta}" "${pfx}" "${name}" "${sfx}" "${order}" "${atomic}" "${int}" "$@" [all …]
|
| H A 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}")" 48 local argscast_32="$(gen_args_cast "int" "atomic" "$@")"
|
| H A D | gen-rust-atomic-helpers.sh | 6 . ${ATOMICDIR}/atomic-tbl.sh 16 local atomic="$1"; shift 19 local atomicname="${atomic}_${pfx}${name}${sfx}${order}" 22 local params="$(gen_params "${int}" "${atomic}" "$@")" 43 * This file provides helpers for the various atomic functions for Rust.
|
| /linux/net/rds/ |
| H A D | rdma.c | 876 || rm->atomic.op_active) in rds_cmsg_atomic() 884 rm->atomic.op_type = RDS_ATOMIC_TYPE_FADD; in rds_cmsg_atomic() 885 rm->atomic.op_m_fadd.add = args->fadd.add; in rds_cmsg_atomic() 886 rm->atomic.op_m_fadd.nocarry_mask = 0; in rds_cmsg_atomic() 889 rm->atomic.op_type = RDS_ATOMIC_TYPE_FADD; in rds_cmsg_atomic() 890 rm->atomic.op_m_fadd.add = args->m_fadd.add; in rds_cmsg_atomic() 891 rm->atomic.op_m_fadd.nocarry_mask = args->m_fadd.nocarry_mask; in rds_cmsg_atomic() 894 rm->atomic.op_type = RDS_ATOMIC_TYPE_CSWP; in rds_cmsg_atomic() 895 rm->atomic.op_m_cswp.compare = args->cswp.compare; in rds_cmsg_atomic() 896 rm->atomic.op_m_cswp.swap = args->cswp.swap; in rds_cmsg_atomic() [all …]
|
| /linux/Documentation/ |
| H A 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: 67 Since a platform only has a single means of achieving atomic operations
|
| H A D | atomic_t.txt | 2 On atomic types (atomic_t atomic64_t and atomic_long_t). 4 The atomic type provides an interface to the architecture's means of atomic 5 RMW operations between CPUs (atomic operations on MMIO are not supported and 20 RMW atomic operations: 67 Therefore, an explicitly unsigned variant of the atomic ops is strictly 91 C Atomic-RMW-ops-are-atomic-WRT-atomic_set 118 The obvious case where this is not so is when we need to implement atomic ops 155 All these operations are SMP atomic; that is, the operations (for a single 156 atomic variable) can be fully ordered and no intermediate state is lost or 192 only apply to the RMW atomic ops and can be used to augment/upgrade the [all …]
|
| /linux/sound/synth/emux/ |
| H A 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); 290 int atomic, int hop) in snd_emux_event_oss_input() argument 303 return snd_emux_event_input(ev, direct, private_data, atomic, hop); in snd_emux_event_oss_input() 311 emuspec_control(emu, p, cmd, data, atomic, hop); in snd_emux_event_oss_input() 313 gusspec_control(emu, p, cmd, data, atomic, hop); in snd_emux_event_oss_input() 323 unsigned char *event, int atomic, int hop) in emuspec_control() argument 363 fake_event(emu, port, voice, MIDI_CTL_ALL_NOTES_OFF, 0, atomic, hop); in emuspec_control() [all …]
|
| /linux/drivers/firmware/arm_scmi/transports/ |
| H A D | Kconfig | 52 bool "Enable atomic mode support for SCMI SMC transport" 55 Enable support of atomic operation for SCMI SMC based transport. 57 If you want the SCMI SMC based transport to operate in atomic 60 Enabling atomic mode operations allows any SCMI driver using this 61 transport to optionally ask for atomic SCMI transactions and operate 62 in atomic context too, at the price of using a number of busy-waiting 109 bool "Enable atomic mode for SCMI VirtIO transport" 112 Enable support of atomic operation for SCMI VirtIO based transport. 114 If you want the SCMI VirtIO based transport to operate in atomic 118 Enabling atomic mode operations allows any SCMI driver using this [all …]
|
| /linux/include/linux/ |
| H A D | spinlock.h | 170 * architectures imply an smp_mb() for each atomic instruction and equally don't 489 * (asm-mips/atomic.h needs above definitions) 491 #include <linux/atomic.h> 494 * @atomic: the atomic counter 497 * Decrements @atomic by 1. If the result is 0, returns true and locks 500 extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); 501 #define atomic_dec_and_lock(atomic, lock) \ argument 502 __cond_lock(lock, _atomic_dec_and_lock(atomic, lock)) 504 extern int _atomic_dec_and_lock_irqsave(atomic_t *atomic, spinlock_ 506 atomic_dec_and_lock_irqsave(atomic,lock,flags) global() argument 510 atomic_dec_and_raw_lock(atomic,lock) global() argument 515 atomic_dec_and_raw_lock_irqsave(atomic,lock,flags) global() argument [all...] |
| /linux/sound/core/seq/ |
| H A D | seq_system.c | 81 void snd_seq_system_broadcast(int client, int port, int type, bool atomic) in snd_seq_system_broadcast() argument 88 snd_seq_kernel_client_dispatch(sysclient, &ev, atomic, 0); in snd_seq_system_broadcast() 94 bool atomic) in snd_seq_system_notify() argument 101 return snd_seq_kernel_client_dispatch(sysclient, ev, atomic, 0); in snd_seq_system_notify() 105 static int event_input_timer(struct snd_seq_event * ev, int direct, void *private_data, int atomic,… in event_input_timer() argument 107 return snd_seq_control_queue(ev, atomic, hop); in event_input_timer()
|
| H A D | seq_ump_convert.c | 365 int atomic, int hop) in cvt_ump_midi1_to_midi2() argument 428 atomic, hop); in cvt_ump_midi1_to_midi2() 435 int atomic, int hop) in cvt_ump_midi2_to_midi1() argument 472 atomic, hop); in cvt_ump_midi2_to_midi1() 479 atomic, hop); in cvt_ump_midi2_to_midi1() 500 atomic, hop); in cvt_ump_midi2_to_midi1() 508 int atomic, int hop) in cvt_ump_to_any() argument 542 &ev_cvt[i], atomic, hop); in cvt_ump_to_any() 554 int atomic, int hop) in deliver_with_group_convert() argument 565 atomic, hop); in deliver_with_group_convert() [all …]
|
| /linux/Documentation/driver-api/ |
| H A D | basics.rst | 96 .. kernel-doc:: include/linux/atomic/atomic-instrumented.h 99 .. kernel-doc:: include/linux/atomic/atomic-arch-fallback.h 102 .. kernel-doc:: include/linux/atomic/atomic-long.h
|
| /linux/arch/mips/include/asm/ |
| H A D | atomic.h | 37 ATOMIC_OPS(atomic, int) 144 ATOMIC_OPS(atomic, add, int, +=, addu, ll, sc) 145 ATOMIC_OPS(atomic, sub, int, -=, subu, ll, sc) 166 ATOMIC_OPS(atomic, and, int, &=, and, ll, sc) 167 ATOMIC_OPS(atomic, or, int, |=, or, ll, sc) 168 ATOMIC_OPS(atomic, xor, int, ^=, xor, ll, sc) 248 ATOMIC_SIP_OP(atomic, int, subu, ll, sc)
|
| /linux/drivers/gpu/drm/ci/xfails/ |
| H A D | meson-g12b-fails.txt | 9 kms_properties@connector-properties-atomic,Fail 11 kms_properties@get_properties-sanity-atomic,Fail 12 kms_properties@get_properties-sanity-non-atomic,Fail
|
| /linux/Documentation/core-api/ |
| H A D | local_ops.rst | 11 This document explains the purpose of the local atomic operations, how 26 Purpose of local atomic operations 29 Local atomic operations are meant to provide fast and highly reentrant per CPU 30 counters. They minimize the performance cost of standard atomic operations by 34 Having fast per CPU atomic counters is interesting in many cases: it does not 39 Local atomic operations only guarantee variable modification atomicity wrt the 50 It can be done by slightly modifying the standard atomic operations: only 63 Rules to follow when using local atomic operations 82 "``long``", aligned, variables are always atomic. Since no memory 87 How to use local atomic operations [all …]
|
| /linux/drivers/firmware/arm_scmi/ |
| H A D | clock.c | 170 u32 oem_val, bool atomic); 174 bool atomic); 633 bool atomic) in scmi_clock_config_set() argument 647 t->hdr.poll_completion = atomic; in scmi_clock_config_set() 724 bool atomic) in scmi_clock_config_set_v2() argument 740 t->hdr.poll_completion = atomic; in scmi_clock_config_set_v2() 760 bool atomic) in scmi_clock_enable() argument 773 NULL_OEM_TYPE, 0, atomic); in scmi_clock_enable() 777 bool atomic) in scmi_clock_disable() argument 790 NULL_OEM_TYPE, 0, atomic); in scmi_clock_disable() [all …]
|
| /linux/drivers/i2c/busses/ |
| H A D | i2c-xiic.c | 104 bool atomic; member 410 if (!i2c->atomic) in xiic_setclk() 504 if (!i2c->atomic) in xiic_reinit() 587 if (!i2c->atomic) in xiic_read_rx() 684 if (!i2c->atomic) in xiic_fill_tx_fifo() 709 if (!i2c->atomic) in xiic_fill_tx_fifo() 714 if (i2c->atomic && xiic_error_check(i2c)) in xiic_fill_tx_fifo() 918 if (i2c->atomic) in xiic_wait_not_busy() 959 if (!i2c->atomic) in xiic_start_recv() 1060 if (!i2c->atomic) in xiic_start_recv() [all …]
|
| H A D | i2c-imx-lpi2c.c | 191 #define lpi2c_imx_read_msr_poll_timeout(atomic, val, cond) \ argument 192 (atomic ? readl_poll_timeout_atomic(lpi2c_imx->base + LPI2C_MSR, val, \ 203 static int lpi2c_imx_bus_busy(struct lpi2c_imx_struct *lpi2c_imx, bool atomic) in lpi2c_imx_bus_busy() argument 208 err = lpi2c_imx_read_msr_poll_timeout(atomic, temp, in lpi2c_imx_bus_busy() 253 struct i2c_msg *msgs, bool atomic) in lpi2c_imx_start() argument 265 return lpi2c_imx_bus_busy(lpi2c_imx, atomic); in lpi2c_imx_start() 268 static void lpi2c_imx_stop(struct lpi2c_imx_struct *lpi2c_imx, bool atomic) in lpi2c_imx_stop() argument 275 err = lpi2c_imx_read_msr_poll_timeout(atomic, temp, temp & MSR_SDF); in lpi2c_imx_stop() 393 static int lpi2c_imx_txfifo_empty(struct lpi2c_imx_struct *lpi2c_imx, bool atomic) in lpi2c_imx_txfifo_empty() argument 398 err = lpi2c_imx_read_msr_poll_timeout(atomic, temp, in lpi2c_imx_txfifo_empty() [all …]
|
| /linux/drivers/gpu/drm/xe/ |
| H A D | xe_guc_log.c | 67 static struct xe_guc_log_snapshot *xe_guc_log_snapshot_alloc(struct xe_guc_log *log, bool atomic) in xe_guc_log_snapshot_alloc() argument 73 snapshot = kzalloc(sizeof(*snapshot), atomic ? GFP_ATOMIC : GFP_KERNEL); in xe_guc_log_snapshot_alloc() 86 atomic ? GFP_ATOMIC : GFP_KERNEL); in xe_guc_log_snapshot_alloc() 94 snapshot->copy[i] = kmalloc(size, atomic ? GFP_ATOMIC : GFP_KERNEL); in xe_guc_log_snapshot_alloc() 142 struct xe_guc_log_snapshot *xe_guc_log_snapshot_capture(struct xe_guc_log *log, bool atomic) in xe_guc_log_snapshot_capture() argument 155 snapshot = xe_guc_log_snapshot_alloc(log, atomic); in xe_guc_log_snapshot_capture()
|
| H A D | xe_pagefault.c | 67 bool atomic) in xe_pagefault_handle_vma() argument 78 needs_vram = xe_vma_need_vram_for_atomic(vm->xe, vma, atomic); in xe_pagefault_handle_vma() 90 vma->tile_invalidated) && !atomic) in xe_pagefault_handle_vma() 164 bool atomic; in xe_pagefault_service() local 190 atomic = xe_pagefault_access_is_atomic(pf->consumer.access_type); in xe_pagefault_service() 194 pf->consumer.page_addr, atomic); in xe_pagefault_service() 196 err = xe_pagefault_handle_vma(gt, vma, atomic); in xe_pagefault_service()
|
| /linux/Documentation/litmus-tests/ |
| H A D | README | 12 atomic (/atomic directory) 16 Test that an atomic RMW followed by a smp_mb__after_atomic() is 20 Atomic-RMW-ops-are-atomic-WRT-atomic_set.litmus 21 Test that atomic_set() cannot break the atomicity of atomic RMWs.
|
| /linux/scripts/atomic/fallbacks/ |
| H A D | set_release | 2 if (__native_word(${atomic}_t)) { 6 raw_${atomic}_set(v, i);
|