On 05/31/2016 08:15 PM, Konrad Rzeszutek Wilk wrote:
On Mon, May 30, 2016 at 01:54:06PM +0200, Krzysztof Kozlowski wrote:
The dma-mapping core and the implementations do not change the DMA attributes passed by pointer. Thus the pointer can point to const data. However the attributes do not have to be a bitfield. Instead unsigned long will do fine:
This is just simpler. Both in terms of reading the code and setting attributes. Instead of initializing local attributes on the stack and passing pointer to it to dma_set_attr(), just set the bits.
It brings safeness and checking for const correctness because the attributes are passed by value.
.. why not go the next step a do an enum? Perhaps that should be mentioned as part of the description?
These are additive flags so to me this would look a little bit weird: enum dma_attr { DMA_ATTR_WRITE_BARRIER = 0x1, DMA_ATTR_WEAK_ORDERING = 0x2, DMA_ATTR_WRITE_COMBINE = 0x4, DMA_ATTR_NON_CONSISTENT = 0x8, ... }
It doesn't really look like enumeration.
Best regards, Krzysztof