From: Gary Guo Date: Tue, 2 Jun 2026 14:17:55 +0000 (+0100) Subject: rust: dma: update to keyworded index projection syntax X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=bd8e8087cff52c2d04e1934e9dbe14b84ff6c795;p=thirdparty%2Fkernel%2Flinux.git rust: dma: update to keyworded index projection syntax Demonstrate the preferred syntax of index projection in DMA documentation and examples. A few `[i]?` cases are converted to demonstrate the new variant. Reviewed-by: Alice Ryhl Reviewed-by: Andreas Hindborg Reviewed-by: Alexandre Courbot Signed-off-by: Gary Guo Acked-by: Danilo Krummrich Link: https://patch.msgid.link/20260602-projection-syntax-rework-v2-4-6989470f5440@garyguo.net Signed-off-by: Miguel Ojeda --- diff --git a/rust/kernel/dma.rs b/rust/kernel/dma.rs index 3e4d44749aaff..d6382904a90d0 100644 --- a/rust/kernel/dma.rs +++ b/rust/kernel/dma.rs @@ -1152,8 +1152,8 @@ unsafe impl Sync for CoherentHandle {} /// unsafe impl kernel::transmute::AsBytes for MyStruct{}; /// /// # fn test(alloc: &kernel::dma::Coherent<[MyStruct]>) -> Result { -/// let whole = kernel::dma_read!(alloc, [2]?); -/// let field = kernel::dma_read!(alloc, [1]?.field); +/// let whole = kernel::dma_read!(alloc, [try: 2]); +/// let field = kernel::dma_read!(alloc, [panic: 1].field); /// # Ok::<(), Error>(()) } /// ``` #[macro_export] @@ -1189,8 +1189,8 @@ macro_rules! dma_read { /// unsafe impl kernel::transmute::AsBytes for MyStruct{}; /// /// # fn test(alloc: &kernel::dma::Coherent<[MyStruct]>) -> Result { -/// kernel::dma_write!(alloc, [2]?.member, 0xf); -/// kernel::dma_write!(alloc, [1]?, MyStruct { member: 0xf }); +/// kernel::dma_write!(alloc, [try: 2].member, 0xf); +/// kernel::dma_write!(alloc, [panic: 1], MyStruct { member: 0xf }); /// # Ok::<(), Error>(()) } /// ``` #[macro_export] diff --git a/samples/rust/rust_dma.rs b/samples/rust/rust_dma.rs index 129bb4b39c044..a2c34bb742735 100644 --- a/samples/rust/rust_dma.rs +++ b/samples/rust/rust_dma.rs @@ -73,7 +73,7 @@ impl pci::Driver for DmaSampleDriver { Coherent::zeroed_slice(pdev.as_ref(), TEST_VALUES.len(), GFP_KERNEL)?; for (i, value) in TEST_VALUES.into_iter().enumerate() { - kernel::dma_write!(ca, [i]?, MyStruct::new(value.0, value.1)); + kernel::dma_write!(ca, [try: i], MyStruct::new(value.0, value.1)); } let size = 4 * page::PAGE_SIZE; @@ -91,16 +91,14 @@ impl pci::Driver for DmaSampleDriver { } impl DmaSampleDriver { - fn check_dma(&self) -> Result { + fn check_dma(&self) { for (i, value) in TEST_VALUES.into_iter().enumerate() { - let val0 = kernel::dma_read!(self.ca, [i]?.h); - let val1 = kernel::dma_read!(self.ca, [i]?.b); + let val0 = kernel::dma_read!(self.ca, [panic: i].h); + let val1 = kernel::dma_read!(self.ca, [panic: i].b); assert_eq!(val0, value.0); assert_eq!(val1, value.1); } - - Ok(()) } } @@ -109,7 +107,7 @@ impl PinnedDrop for DmaSampleDriver { fn drop(self: Pin<&mut Self>) { dev_info!(self.pdev, "Unload DMA test driver.\n"); - assert!(self.check_dma().is_ok()); + self.check_dma(); for (i, entry) in self.sgt.iter().enumerate() { dev_info!(