MMIO를 위한 휘발성(volatile) 메모리 액세스

  • pointer::read_volatilepointer::write_volatile을 사용하세요.
  • 참조를 유지하지 마세요.
  • addr_of! 를 사용하면 임시 용도의 참조를 만들지 않고도 구조체의 필드를 읽을 수 있습니다.
  • 휘발성(volatile) 액세스: 읽기 또는 쓰기 작업이 부수 효과(side effect)를 동반할 수 있기 때문에 컴파일러나 하드웨어가 임의로 이를 읽기 쓰기 작업의 순서를 바꾸거나, 중복해서 수행하거나 또는 제거하지 못하게 합니다.
    • 일반적으로 쓰고 난 후 읽으면(예: 변경 가능한 참조를 통해) 컴파일러는 읽은 값이 방금 쓴 값과 동일하다고 가정하고 실제로 메모리를 읽지 않을 수 있습니다.
  • 하드웨어에 대한 휘발성 액세스를 위한 일부 기존 크레이트는 참조를 유지하지만 이는 올바른 것이 아닙니다. 참조가 있을 때마다 컴파일러는 이를 역참조하도록 선택할 수 있습니다.
  • addr_of! 매크로를 사용하여 구조체 포인터에서 구조체 필드 포인터를 가져옵니다.