diff --git a/src/error.rs b/src/error.rs index fde4796a4f53ecfe6614777f7763470d5177ff8c..9a4b0b5ad39ae9d8ff81b221e4dd961958729972 100644 --- a/src/error.rs +++ b/src/error.rs @@ -5,7 +5,7 @@ pub struct Error { pub errno: i32, } -pub type Result = result::Result; +pub type Result = result::Result; impl Error { pub fn new(errno: i32) -> Error { diff --git a/src/io/mmio.rs b/src/io/mmio.rs index f2126362cf3ea2eea0bc48ce02050fb22bd390f0..42251adcece991f6b69c15e7f8ed742302ed9002 100644 --- a/src/io/mmio.rs +++ b/src/io/mmio.rs @@ -11,9 +11,23 @@ pub struct Mmio { impl Mmio { /// Create a new Mmio without initializing + #[deprecated = "unsound because it's possible to read even though it's uninitialized"] pub fn new() -> Self { - Mmio { - value: MaybeUninit::uninit() + unsafe { Self::uninit() } + } + pub unsafe fn zeroed() -> Self { + Self { + value: MaybeUninit::zeroed(), + } + } + pub unsafe fn uninit() -> Self { + Self { + value: MaybeUninit::uninit(), + } + } + pub const fn from(value: T) -> Self { + Self { + value: MaybeUninit::new(value), } } }