atomic_t
読み:アトミック-アンダースコア-ティー
外語:atomic_t

 Linuxカーネルで提供されているアトミック変数の変数型。
目次

定義
 linux/linux/types.hにおいて定義されている。
typedef struct {
    int counter;
} atomic_t;
 64ビット環境ではatomic64_tも定義されるが、CPUごとに定義が異なる。変数型もlongだったり、long longだったり、u64だったりする。

特徴

使用方法
 atomic_t型はint型変数一つを含むstructのtypedefとして定義される。
 従って、使用する際はatomic_tを通常の変数型のように使用し、アトミック変数を宣言して用いることになる。
atomic_t var;
 アトミック変数は宣言しただけでは初期化されないため、初期化する必要がある。
 宣言時に初期化するには、ATOMIC_INITマクロを用いる。ATOMIC_INITマクロは、arch/arm/include/asm/atomic.h で定義されている。
#define ATOMIC_INIT(i)  { (i) }
 従って、次のようにして宣言すれば、宣言時点で初期化される。
atomic_t var = ATOMIC_INIT(0);
 または、atomic_set関数を用いて初期化することもできる。

関数とマクロ
 例えば、Android(ARM)用の実装では、次のような関数やマクロがある。

関数
 関数はすべてstaticのinline関数である。

マクロ

再検索