Linux 内核提供了一系列原子操作函数,用于对 `atomic_t` 类型的变量进行原子操作。以下是这些函数的详细说明和使用示例:
1. `atomic_set(v, i)`:将 `atomic_t` 类型变量 `v` 的值设置为 `i`。这是一个原子操作。
#include<linux/atomic.h>
atomic_t var = ATOMIC_INIT(0);
void set_atomic(int value) {
atomic_set(&var, value);
}
2. `atomic_read(v)`:原子地读取 `atomic_t` 类型变量 `v` 的值。这是一个原子操作。
#include<linux/atomic.h>
atomic_t var = ATOMIC_INIT(0);
int get_atomic() {
return atomic_read(&var);
}
3. `atomic_add(i, v)`:原子地将 `atomic_t` 类型变量 `v` 的值加上 `i`。这是一个原子操作。
#include<linux/atomic.h>
atomic_t var = ATOMIC_INIT(0);
void add_atomic(int value) {
atomic_add(value, &var);
}
4. `atomic_sub(i, v)`:原子地将 `atomic_t` 类型变量 `v` 的值减去 `i`。这是一个原子操作。
#include<linux/atomic.h>
atomic_t var = ATOMIC_INIT(0);
void sub_atomic(int value) {