linuxのメモ

Linux kernelの実装を解説していきます (対象ver 4.5)

メモリバリア - barrier()

概要

メモリの内容が確実に同期されることを保証する

詳細

gccコンパイルする場合はlinux/compiler-gcc.hに定義されている

__asm__ __volatile__("": : :"memory")

が実行されると思いがちだが、IntelのCPUの場合はlinux/compiler-intel.hに定義されている

__memory_barrier()

が実行されることになる__memory_barrier()はどこで定義されているか不明な謎の関数である。。。

おそらくgcc内で定義されているシンボルと思われる

このマクロでは、直前の実行命令がコンパイラの最適化による再配置や除去を抑止し、コードに記述されている通りにメモリ参照を行うように強制する