int atomic_add_return(int i, atomic_t *v); int atomic_sub_return(int i, atomic_t *v); int atomic_inc_return(atomic_t *v); int atomic_dec_return(atomic_t *v);
⑵位原子操作
1.设置位
void set_bit(nr, void *addr);
上述操作设置 addr 地址的第 nr 位,所谓设置位即是将位写为 1。
2.清除位
void clear_bit(nr, void *addr);
上述操作清除 addr 地址的第 nr 位,所谓清除位即是将位写为 0。
3.改变位
void change_bit(nr, void *addr);
上述操作对 addr 地址的第 nr 位进行反置。
4.测试位
test_bit(nr, void *addr); 上述操作返回 addr 地址的第 nr 位。
5.测试并操作位 int test_and_set_bit(nr, void *addr); int test_and_clear_bit(nr, void *addr); int test_and_change_bit(nr, void *addr);