MMIO 揮發性記憶體存取
- 使用
pointer::read_volatile
和pointer::write_volatile
。 - 請勿保留參照。
addr_of!
可用來取得結構體的欄位,而不必建立中繼參照。
- 揮發性存取:讀取或寫入作業可能會有副作用,因此請避免編譯器或硬體遭到重新排序、複製或省略。
- 通常,如果您在寫入後讀取 (例如透過可變動參照),編譯器可能會假設讀取的值與剛寫入的值相同,而不實際讀取記憶體。
- 有些用於硬體揮發性存取的現有 Crate 確實會保留參照,但這樣不安全。每當有參照存在時,編譯器可能會選擇解除參照。
- 使用
addr_of!
巨集,從結構體的指標取得結構體欄位指標。