On Wed, Jul 16, 2025 at 11:15 AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > On Thu, Jul 10, 2025 at 09:45:44PM +0200, Danilo Krummrich wrote: > > +/// Returns a bitmask with the lowest `n` bits set to `1`. > > +/// > > +/// For `n` in `0..=64`, returns a mask with the lowest `n` bits set. > > +/// For `n > 64`, returns `u64::MAX` (all bits set). > > +/// > > +/// # Examples > > +/// > > +/// ``` > > +/// use kernel::dma::dma_bit_mask; > > +/// > > +/// assert_eq!(dma_bit_mask(0), 0); > > +/// assert_eq!(dma_bit_mask(1), 0b1); > > +/// assert_eq!(dma_bit_mask(64), u64::MAX); > > +/// assert_eq!(dma_bit_mask(100), u64::MAX); // Saturates at all bits set. > > +/// ``` > > +pub const fn dma_bit_mask(n: usize) -> u64 { > > + match n { > > + 0 => 0, > > + 1..=64 => u64::MAX >> (64 - n), > > + _ => u64::MAX, > > + } > > +} > > This is just the C macro DMA_BIT_MASK(), right? If so, can that be said > here somewhere? Or, how about turning DMA_BIT_MASK() into an inline > function which could then be just called by the rust code directly > instead? Converting to an inline method would not make a difference for calling it from Rust. We would need a helper in rust/helpers/ either way, and it's also possible to define a helper for a macro. Alice