xref: /DragonOS/docs/kernel/core_api/atomic.md (revision 1ea2daad8121b77ed704e6d7c3a09f478147441d)
1# 原子变量
2
3## 简介
4
5  DragonOS实现了原子变量,类型为atomic_t. 原子变量是基于具体体系结构的原子操作指令实现的。具体实现在`kernel/common/atomic.h`中。
6
7## API
8
9   请注意,以下API均为原子操作。
10
11### `inline void atomic_add(atomic_t *ato, long val)`
12
13#### 描述
14
15  原子变量增加指定值
16
17#### 参数
18
19**ato**
20
21  原子变量对象
22
23**val**
24
25  变量要增加的值
26
27### `inline void atomic_sub(atomic_t *ato, long val)`
28
29#### 描述
30
31  原子变量减去指定值
32
33#### 参数
34
35**ato**
36
37  原子变量对象
38
39**val**
40
41  变量要被减去的值
42
43### `void atomic_inc(atomic_t *ato)`
44
45#### 描述
46
47  原子变量自增1
48
49#### 参数
50
51**ato**
52
53  原子变量对象
54
55
56### `void atomic_dec(atomic_t *ato)`
57
58#### 描述
59
60  原子变量自减1
61
62#### 参数
63
64**ato**
65
66  原子变量对象
67
68### `inline void atomic_set_mask(atomic_t *ato, long mask)`
69
70#### 描述
71
72  将原子变量的值与mask变量进行or运算
73
74#### 参数
75
76**ato**
77
78  原子变量对象
79
80**mask**
81
82  与原子变量进行or运算的变量
83
84### `inline void atomic_clear_mask(atomic_t *ato, long mask)`
85
86#### 描述
87
88  将原子变量的值与mask变量进行and运算
89
90#### 参数
91
92**ato**
93
94  原子变量对象
95
96**mask**
97
98  与原子变量进行and运算的变量
99
100