原子变量

简介

  DragonOS实现了原子变量,类型为atomic_t. 原子变量是基于具体体系结构的原子操作指令实现的。具体实现在kernel/common/atomic.h中。

API

   请注意,以下API均为原子操作。

inline void atomic_add(atomic_t *ato, long val)

描述

  原子变量增加指定值

参数

ato

  原子变量对象

val

  变量要增加的值

inline void atomic_sub(atomic_t *ato, long val)

描述

  原子变量减去指定值

参数

ato

  原子变量对象

val

  变量要被减去的值

void atomic_inc(atomic_t *ato)

描述

  原子变量自增1

参数

ato

  原子变量对象

void atomic_dec(atomic_t *ato)

描述

  原子变量自减1

参数

ato

  原子变量对象

inline void atomic_set_mask(atomic_t *ato, long mask)

描述

  将原子变量的值与mask变量进行or运算

参数

ato

  原子变量对象

mask

  与原子变量进行or运算的变量

inline void atomic_clear_mask(atomic_t *ato, long mask)

描述

  将原子变量的值与mask变量进行and运算

参数

ato

  原子变量对象

mask

  与原子变量进行and运算的变量