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

Abdiel Janulgue
2025-01-09T11:14:30Z

On 08/01/2025 21:09, Daniel Almeida wrote:
> I was trying to test this again, but it apparently doesn’t compile for the reasons
> Daniel Sedlak pointed out above.
>

Okay, now I noticed the problem.

bindgen generates this rust signature for dma_alloc_attrs():

extern "C" {
pub fn dma_alloc_attrs(
dev: *mut device,
size: usize,
dma_handle: *mut dma_addr_t,
flag: gfp_t,
attrs: ffi::c_ulong,
) -> *mut ffi::c_void;
}

We are interested in the last argument 'attrs'. For some reason it seems
ffi::c_ulong is defined as usize at least on top of `rust-next` commit
0c5928deada15a8d075516e6e0d9ee19011bb000.

In previous versions ffi::c_ulong used to be u64. I also noticed that
core::ffi::c_ulong is u64 while crate::ffi::c_ulong is usize. In the
previous versions they're both u64.

So my mistake here as is I tried to match the signature manually by
using usize as suggested by the compiler. Maybe we should stick to
ffi::c_ulong return type for Attrs::as_raw() to be in sync the
bindgen-generated interface?

Regards,
Abdiel