While reviewing some CAN driver I stumbled on iounmap
which has following prototype on x86:
extern void iounmap(volatile void __iomem *addr);
I argued that the driver should not use volatile
but then I cannot explain why the argument to
iounmap takes a volatile.
The same goes for many other functions in
the io*.h headers.
Grepping the other archs they mostly follow
same pattern.
Can anyone explain the rational for volatile in this case.
Thanks,
Sam
--