*参照元 [#i0635b50] #backlinks *説明 [#eb6166fe] -パス: [[linux-2.6.33/include/linux/compiler-gcc.h]] -FIXME: これは何? --説明 -メモリバリアを作成する。 --コンパイラの最適化による命令の移動、省略を防ぎ、 下記の効果をもたらす。 ---メモリバリアの前に実行された命令の結果は、 メモリバリアに到達後に全て反映される。 ---メモリバリアの後に実行される命令は、 メモリバリアに到達する前に実行した命令の結果を参照できる。 --ただしハードウェアレベルでは保証されない。 すなわちキャッシュコヒーレンシ、バスの内部バッファなどは考慮されない。 **引数 [#mb263ffc] -なし **返り値 [#u5359184] -なし **参考 [#je868cee] *実装 [#l1e3e9c8] /* Optimization barrier */ /* The "volatile" is due to gcc bugs */ #define barrier() __asm__ __volatile__("": : :"memory") - -- -メモリバリア --__volatile__ キーワードにより、 gcc の最適化による命令の移動、省略などを防ぐ。 --memory 指定により、 入出力リストに書かれていないレジスタやメモリが変更されたり、 予期せぬメモリの破壊があることをコンパイラに伝える。 *コメント [#ca6254d9]