lkml.org 
[lkml]   [2008]   [Mar]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [RFC PATCH] kernel: add byteorder macros with alignment fixups
    From
    Date
    Create linux/unaligned.h to hold a common pattern in the kernel:

    le32_to_cpu(get_unaligned((__le32 *)x));

    Repeat for various combinations of le/be and 64/32/16 bit. Add
    a variant that operates on possibly unaligned pointers to
    byteorder/generic.h

    Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
    ---
    Now the indirect include of asm/unaligned is opt-in when places
    add the linux/unaligned header.

    include/linux/unaligned.h | 42 ++++++++++++++++++++++++++++++++++++++++++
    1 files changed, 42 insertions(+), 0 deletions(-)

    diff --git a/include/linux/unaligned.h b/include/linux/unaligned.h
    new file mode 100644
    index 0000000..7d8fddc
    --- /dev/null
    +++ b/include/linux/unaligned.h
    @@ -0,0 +1,42 @@
    +#ifndef _LINUX_UNALIGNED_H_
    +#define _LINUX_UNALIGNED_H_
    +
    +#include <linux/types.h>
    +#include <asm/byteorder.h>
    +#include <asm/unaligned.h>
    +
    +#ifdef __KERNEL__
    +
    +static inline u64 le64_to_cpu_unaligned(void *p)
    +{
    + return __le64_to_cpu(get_unaligned((__le64 *)p));
    +}
    +
    +static inline u32 le32_to_cpu_unaligned(void *p)
    +{
    + return __le32_to_cpu(get_unaligned((__le32 *)p));
    +}
    +
    +static inline u16 le16_to_cpu_unaligned(void *p)
    +{
    + return __le16_to_cpu(get_unaligned((__le16 *)p));
    +}
    +
    +static inline u64 be64_to_cpu_unaligned(void *p)
    +{
    + return __be64_to_cpu(get_unaligned((__be64 *)p));
    +}
    +
    +static inline u32 be32_to_cpu_unaligned(void *p)
    +{
    + return __be32_to_cpu(get_unaligned((__be32 *)p));
    +}
    +
    +static inline u16 be16_to_cpu_unaligned(void *p)
    +{
    + return __be16_to_cpu(get_unaligned((__be16 *)p));
    +}
    +
    +#endif /* KERNEL */
    +
    +#endif /* _LINUX_UNALIGNED_H */
    --
    1.5.4.4.684.g0e08




    \
     
     \ /
      Last update: 2008-03-20 20:25    [W:0.027 / U:60.208 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site