Ustalenie lokalizacji wykorzystania barier (ogrodzeń)

Instrukcje x86 lfence / sfence / mfence są używane do implementacji mechanizmów rmb () / wmb () / mb () w jądrze Linux. Łatwo zrozumieć, że są one używane do serializacji dostępu do pamięci. Jednak o wiele trudniej jest określić, kiedy i gdzie z nich korzystać podczas pisania kodu - przed napotkaniem błędu w działaniu środowiska wykonawczego.

Chciałem wiedzieć, czy istnieją znane zastrzeżenia, które można sprawdzić, pisząc / przeglądając kod, który może pomóc nam określić, gdzie należy umieścić bariery. Rozumiem, że jest to zbyt skomplikowane, ale czy istnieje zasada lub lista kontrolna, która może pomóc nam zidentyfikować miejsca kodowe, w których są one potrzebne?

questionAnswers(1)

yourAnswerToTheQuestion