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