Messages in this thread | | | Date | Wed, 5 Dec 2007 12:41:50 +0100 | From | Jan Kara <> | Subject | Re: [RFC v2] Documentation about unaligned memory access |
| |
A minor typo:
... > Avoiding unaligned accesses > =========================== > > The easiest way to avoid unaligned access is to use the get_unaligned() and > put_unaligned() macros provided by the <asm/unaligned.h> header file. > > Going back to an earlier example of code that potentially causes unaligned > access: > > void myfunc(u8 *data, u32 value) > { > [...] > *((u32 *) data) = cpu_to_le32(value); > [...] > } > > To avoid the unaligned memory access, you would rewrite it as follows: > > void myfunc(u8 *data, u32 value) > { > [...] > value = cpu_to_le32(value); > put_unaligned(value, data); > [...] > } > > The get_unaligned() macro works similarly. Assuming 'data' is a pointer to > memory and you wish to avoid unaligned access, its usage is as follows: > > u32 value = get_unaligned(data); > > These macros work work for memory accesses of any length (not just 32 bits as ^^^^^^^^^ remove one of them :)
Honza -- Jan Kara <jack@suse.cz> SuSE CR Labs
| |