备注
AI Translation Notice
This document was automatically translated by Qwen/Qwen3-8B
model, for reference only.
Source document: kernel/core_api/atomic.md
Translation time: 2025-05-19 01:41:25
Translation model:
Qwen/Qwen3-8B
Please report issues via Community Channel
Atomic Variables
Introduction
DragonOS implements atomic variables of type atomic_t
. Atomic variables are implemented using architecture-specific atomic operation instructions. The specific implementation is located in kernel/common/atomic.h
.
API
Note that all the following APIs are atomic operations.
inline void atomic_add(atomic_t *ato, long val)
Description
Atomically adds a specified value to the atomic variable.
Parameters
ato
The atomic variable object.
val
The value to be added to the variable.
inline void atomic_sub(atomic_t *ato, long val)
Description
Atomically subtracts a specified value from the atomic variable.
Parameters
ato
The atomic variable object.
val
The value to be subtracted from the variable.
void atomic_inc(atomic_t *ato)
Description
Atomically increments the atomic variable by 1.
Parameters
ato
The atomic variable object.
void atomic_dec(atomic_t *ato)
Description
Atomically decrements the atomic variable by 1.
Parameters
ato
The atomic variable object.
inline void atomic_set_mask(atomic_t *ato, long mask)
Description
Performs a bitwise OR operation between the atomic variable and the mask variable.
Parameters
ato
The atomic variable object.
mask
The variable used for the OR operation with the atomic variable.
inline void atomic_clear_mask(atomic_t *ato, long mask)
Description
Performs a bitwise AND operation between the atomic variable and the mask variable.
Parameters
ato
The atomic variable object.
mask
The variable used for the AND operation with the atomic variable.