lkml.org 
[lkml]   [2008]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 6/6] byteorder: add store_{endian} helpers
    From
    Date
    Add helpers for the idiom:
    *(__le16 *)ptr = cpu_to_le16(val);

    Can now be written as:
    store_le16(ptr, val);

    Implemented as macros to allow val to be byteswapped at compile-time
    when it is a constant.

    Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
    ---
    include/linux/byteorder.h | 11 +++++++++++
    1 files changed, 11 insertions(+), 0 deletions(-)

    diff --git a/include/linux/byteorder.h b/include/linux/byteorder.h
    index b4713ce..20abbf8 100644
    --- a/include/linux/byteorder.h
    +++ b/include/linux/byteorder.h
    @@ -278,6 +278,17 @@ static inline __be64 __cpu_to_be64p(const __u64 *p)
    # define htons(x) ___htons(x)
    # define ntohs(x) ___ntohs(x)

    +/*
    + * Defined as macros to allow constant folding of the cpu_to_XXXX when
    + * possible.
    + */
    +#define store_le16(ptr, val) (*(__le16 *)(ptr) = cpu_to_le16((u16)(val));)
    +#define store_le32(ptr, val) (*(__le32 *)(ptr) = cpu_to_le32((u32)(val));)
    +#define store_le64(ptr, val) (*(__le64 *)(ptr) = cpu_to_le64((u64)(val));)
    +#define store_be16(ptr, val) (*(__be16 *)(ptr) = cpu_to_be16((u16)(val));)
    +#define store_be32(ptr, val) (*(__be32 *)(ptr) = cpu_to_be32((u32)(val));)
    +#define store_be64(ptr, val) (*(__be64 *)(ptr) = cpu_to_be64((u64)(val));)
    +
    static inline void le16_add_cpu(__le16 *var, u16 val)
    {
    *var = cpu_to_le16(le16_to_cpup(var) + val);
    --
    1.5.6.290.gc4e15


    \
     
     \ /
      Last update: 2008-06-24 02:13    [W:0.019 / U:0.756 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site