rust: types: add `Opaque::zeroed`
authorDanilo Krummrich <dakr@kernel.org>
Mon, 14 Apr 2025 13:18:04 +0000 (15:18 +0200)
committerDanilo Krummrich <dakr@kernel.org>
Sat, 19 Apr 2025 08:41:28 +0000 (10:41 +0200)
Analogous to `Opaque::uninit` add `Opaque::zeroed`, which sets the
corresponding memory to zero. In contrast to `Opaque::uninit`, the
corresponding value, depending on its type, may be initialized.

Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Acked-by: Miguel Ojeda <ojeda@kernel.org>
Link: https://lore.kernel.org/r/20250414131934.28418-2-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
rust/kernel/types.rs

index 9d0471afc9648f2973235488b441eb109069adb1..eee387727d1ae4950553d6bbf88788fa378156be 100644 (file)
@@ -329,6 +329,14 @@ impl<T> Opaque<T> {
         }
     }
 
+    /// Creates a new zeroed opaque value.
+    pub const fn zeroed() -> Self {
+        Self {
+            value: UnsafeCell::new(MaybeUninit::zeroed()),
+            _pin: PhantomPinned,
+        }
+    }
+
     /// Create an opaque pin-initializer from the given pin-initializer.
     pub fn pin_init(slot: impl PinInit<T>) -> impl PinInit<Self> {
         Self::ffi_init(|ptr: *mut T| {