原子操作指的是在执行过程中不会被别的代码路径所中断的操作,下面列出原子操作相关的函数
1.void atomic_set(atomic_t *v,int i); //设置原子变量的值为i
2.atomic_t v = ATOMIC_INIT(0); //定义原子变量V并初始化为0
3.atomic_read(atomic_t *v); //返回原子变量的值
4.void atomic_add(int i,atomic_t *v); //原子变量增加i
5.void atomic_sub(int i,atomic_t *v); //原子变量减少i
6.void atomic_inc(atomic_t *v); //原子变量增加1
7.void atomic_idec(atomic_t *v); //原子变量减少1
8.int atomic_inc_and_test(atomic_t *v); //原子变量执行自增后测试其是否为0,0则返回true
9.int atomic_dec_and_test(atomic_t *v); //原子变量执行自减后测试其是否为0,0则返回true
10.int atomic_sub_and_test(int i,atomic_t *v); //原子变量执行减i后测试其是否为0,0则返回true
11.int atomic_add_return(int i,atomic_t *v); //原子变量执行加i,并返回新值
12.int atomic_sub_return(int i,atomic_t *v); //原子变量执行减i,并返回新值
13.int atomic_inc_return(atomic_t *v); //原子变量执行自增,并返回新值
14.int atomic_dec_return(atomic_t *v); //原子变量执行自减,并返回新值
15.void set_bit(nr,void *addr); //设置addr地址的第nr位(写1)
16.void clear_bit(nr,void *addr); //清除addr地址的第nr位(写0)
17.void change_bit(nr,void *addr); //对addr地址的第nr位进行反置
18.test_bit(nr,void *addr); //返回addr地址的第nr位
19.int test_and_set_bit(nr,void *addr); //18+15
20.int test_and_clear_bit(nr,void *addr); //18+16
21.int test_and_change_bit(nr,void *addr); //18+17