Здійснення непостійного доступу до пам'яті для MMIO

  • Використовуйте pointer::read_volatile та pointer::write_volatile.
  • Ніколи не тримайте посилання.
  • Використовуйте &raw для отримання полів структур без створення проміжного посилання.
  • Непостійний доступ: операції читання або запису можуть мати побічні ефекти, тому не дозволяйте компілятору чи апаратному забезпеченню їх перевпорядковувати, дублювати чи видаляти.
    • Зазвичай, якщо ви пишете, а потім читаєте, напр. через змінне посилання, компілятор може припустити, що прочитане значення є таким самим, як щойно записане значення, і не турбуватися про фактичне читання пам’яті.
  • Деякі існуючі крейти для непостійного доступу до апаратного забезпечення містять посилання, але це нерозумно. Кожного разу, коли існує посилання, компілятор може вирішити розіменувати його.
  • Використовуйте &raw, щоб отримати покажчики полів структури від покажчика на структуру.
  • Для сумісності зі старими версіями Rust ви можете скористатися замість цього макросом addr_of!.