4

Linuxカーネルプログラミングは初めてです。GUARANTEESの章にあるメモリバリアのドキュメントに混乱しています。

特定の CPU 内でオーバーラップするロードとストアは、その CPU 内で順序付けされているように見えます。

*X = c; d = *X;

CPU は以下のみを発行します。

STORE *X = c, d = LOAD *X

そして、その後の別の例:

オーバーラップするメモリアクセスはマージまたは破棄される可能性があると想定する必要があります。

*A = X; Y = *A;

次のいずれかを取得できます。

STORE *A = X; Y = LOAD *A;
STORE *A = Y = X;

これらは同じように見えますが、2 つの例の違いは何ですか?

4

1 に答える 1

3

そうです、ドキュメントは正しくありません。実際、ファイルのバージョンは最新ではありません。問題を修正した 3.8-rc3 のコミットがあり ます。

それが役立つことを願っています。マティアス

于 2013-01-12T17:26:52.390 に答える