barrier
概要 マルチプロセッサシステムで命令の実行順序の最適化を抑止する 詳細 mb()のwrapperマクロ
概要 命令の実行順序がコード通りに実行されることを保証する 詳細 CONFIG_X86_32の値によって以下のように処理が異なる 有効 alternative()の置き換え元の命令にlock; addl $0,0(%%esp)を、置き換え後の命令にmfenceを、機能番号としてX86_FEATURE_XMM2を指…
概要 読み込んだメモリの内容が全てのCPUで同期されることを保証する 詳細 CONFIG_SMPが有効な場合はsmp_rmb()マクロを実行するがx86では__smp_rmb()もbarrier()と定義されているため、コンフィギュレーションに関係なくbarrier()のwrapperとなっている
概要 変更したメモリの内容が全てのCPUで同期されることを保証する 詳細 CONFIG_SMPが有効な場合は__smp_wmb()マクロを実行するがx86では__smp_wmb()もbarrier()と定義されているため、コンフィギュレーションに関係なくbarrier()のwrapperとなっている
概要 メモリの内容が確実に同期されることを保証する 詳細 gccでコンパイルする場合はlinux/compiler-gcc.hに定義されている __asm__ __volatile__("": : :"memory") が実行されると思いがちだが、IntelのCPUの場合はlinux/compiler-intel.hに定義されている…