دسترسی به حافظه فرار برای MMIO

  • از pointer::read_volatile و pointer::write_volatile استفاده کنید.
  • هرگز reference‌ای را نگه ندارید.
  • addr_of! به شما امکان می‌دهد بدون ایجاد یک مرجع میانی، فیلدهایی از ساختارها را دریافت کنید.
  • دسترسی فرار (Volatile access): عملیات خواندن یا نوشتن ممکن است عوارض جانبی داشته باشد، بنابراین از کامپایلر یا سخت‌افزار از مرتب‌سازی مجدد، کپی‌کردن یا حذف آنها جلوگیری کنید.
    • معمولاً اگر بنویسید و سپس بخوانید، به عنوان مثال. از طریق یک reference، کامپایلر ممکن است فرض کند که مقدار خوانده شده همان مقداری است که نوشته شده است و در واقع خواندن memory را سخت‌تر نکند.
  • برخی از crateهای موجود برای دسترسی فَرار(volatile access) به سخت‌افزار دارای referenceهایی هستند، اما این همیشه درست نیست. هر زمان که یک reference وجود داشته باشد، کامپایلر ممکن است انتخاب کند که reference آن را لغو کند.
  • از ماکرو addr_of! برای دریافت اشاره‌گرهای struct field از یک اشاره‌گر به ساختار استفاده کنید.