Re: [PATCH v6 2/2] rust: add dma coherent allocator abstraction.

From: Abdiel Janulgue
Date: Thu Dec 05 2024 - 09:26:15 EST


On 05/12/2024 15:07, Robin Murphy wrote:
+    pub fn alloc_coherent(
+        dev: &Device,
+        count: usize,
+        flags: kernel::alloc::Flags,

Might it be worth adding at least a placeholder type and argument for "attrs" as well, so there's less churn involved in coming back and adding it later? Or is the intention to have a separate dma_alloc_attrs() constructor for such users?


It certainly is possible to include attrs in the constructor using Option:
```
pub fn alloc_coherent(
dev: &Device,
count: usize,
flags: kernel::alloc::Flags,
attrs: Option<u64>,
) -> Result<CoherentAllocation<T>> {

<cut>
let ret = unsafe {
bindings::dma_alloc_attrs(
dev.as_raw(),
size,
&mut dma_handle, flags.as_raw(),
attrs.unwrap_or(0),
)
};
<cut>
}

```
So the signature of the constructor could be:

let c = CoherentAllocation::alloc_coherent(dev, 4, GFP_KERNEL, None)?;

Andreas, Miguel, Daniel, any thoughts?

Regards,
Abdiel