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

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