bbqueue icon indicating copy to clipboard operation
bbqueue copied to clipboard

Mark BBBuffer as #[repr(C)] to support alignment

Open mciantyre opened this issue 3 years ago • 0 comments

Some DMA engines and peripherals require that buffers are precisely aligned. This commit marks BBBuffer as #[repr(C)] so that the buffer is the first member of the struct. With this guarantee, we can align the BBBuffer for our hardware-assisted transfers. Updated documentation shows one way to align the buffer.

Tested on an i.MX RT processor, where the DMA engine requires circular buffers that are power-of-two sized and aligned. If I can't align my BBBuffer, I'll treat the BBBuffer as linear memory and schedule multiple transfers to handle split_read wraparound. I'm happy to go this route if this commit isn't appropriate for bbqueue.

mciantyre avatar Jul 08 '22 11:07 mciantyre