lkml.org 
[lkml]   [2019]   [Sep]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 08/14] software node: unify PROPERTY_ENTRY_XXX macros
    Date
    We can unify string properties initializer macros with integer
    initializers.

    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    ---
    include/linux/property.h | 64 +++++++++++++++++-----------------------
    1 file changed, 27 insertions(+), 37 deletions(-)

    diff --git a/include/linux/property.h b/include/linux/property.h
    index ec8f84d564a8..238e1507925f 100644
    --- a/include/linux/property.h
    +++ b/include/linux/property.h
    @@ -245,37 +245,33 @@ struct property_entry {
    };

    /*
    - * Note: the below four initializers for the anonymous union are carefully
    + * Note: the below initializers for the anonymous union are carefully
    * crafted to avoid gcc-4.4.4's problems with initialization of anon unions
    * and structs.
    */

    -#define __PROPERTY_ENTRY_ARRAY_LEN(_name_, _type_, _Type_, _val_, _len_)\
    +#define __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_) \
    + sizeof(((struct property_entry *)NULL)->value._elem_)
    +
    +#define __PROPERTY_ENTRY_ARRAY_LEN(_name_, _elem_, _Type_, _val_, _len_)\
    (struct property_entry) { \
    .name = _name_, \
    - .length = (_len_) * sizeof(_type_), \
    + .length = (_len_) * __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_), \
    .is_array = true, \
    .type = DEV_PROP_##_Type_, \
    { .pointer = _val_ }, \
    }

    #define PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, _len_) \
    - __PROPERTY_ENTRY_ARRAY_LEN(_name_, u8, U8, _val_, _len_)
    + __PROPERTY_ENTRY_ARRAY_LEN(_name_, u8_data, U8, _val_, _len_)
    #define PROPERTY_ENTRY_U16_ARRAY_LEN(_name_, _val_, _len_) \
    - __PROPERTY_ENTRY_ARRAY_LEN(_name_, u16, U16, _val_, _len_)
    + __PROPERTY_ENTRY_ARRAY_LEN(_name_, u16_data, U16, _val_, _len_)
    #define PROPERTY_ENTRY_U32_ARRAY_LEN(_name_, _val_, _len_) \
    - __PROPERTY_ENTRY_ARRAY_LEN(_name_, u32, U32, _val_, _len_)
    + __PROPERTY_ENTRY_ARRAY_LEN(_name_, u32_data, U32, _val_, _len_)
    #define PROPERTY_ENTRY_U64_ARRAY_LEN(_name_, _val_, _len_) \
    - __PROPERTY_ENTRY_ARRAY_LEN(_name_, u64, U64, _val_, _len_)
    -
    + __PROPERTY_ENTRY_ARRAY_LEN(_name_, u64_data, U64, _val_, _len_)
    #define PROPERTY_ENTRY_STRING_ARRAY_LEN(_name_, _val_, _len_) \
    -(struct property_entry) { \
    - .name = _name_, \
    - .length = (_len_) * sizeof(const char *), \
    - .is_array = true, \
    - .type = DEV_PROP_STRING, \
    - { .pointer = _val_ }, \
    -}
    + __PROPERTY_ENTRY_ARRAY_LEN(_name_, str, STRING, _val_, _len_)

    #define PROPERTY_ENTRY_U8_ARRAY(_name_, _val_) \
    PROPERTY_ENTRY_U8_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_))
    @@ -288,30 +284,24 @@ struct property_entry {
    #define PROPERTY_ENTRY_STRING_ARRAY(_name_, _val_) \
    PROPERTY_ENTRY_STRING_ARRAY_LEN(_name_, _val_, ARRAY_SIZE(_val_))

    -#define __PROPERTY_ENTRY_INTEGER(_name_, _type_, _Type_, _val_) \
    -(struct property_entry) { \
    - .name = _name_, \
    - .length = sizeof(_type_), \
    - .type = DEV_PROP_##_Type_, \
    - { .value = { ._type_##_data = _val_ } }, \
    +#define __PROPERTY_ENTRY_ELEMENT(_name_, _elem_, _Type_, _val_) \
    +(struct property_entry) { \
    + .name = _name_, \
    + .length = __PROPERTY_ENTRY_ELEMENT_SIZE(_elem_), \
    + .type = DEV_PROP_##_Type_, \
    + { .value = { ._elem_ = _val_ } }, \
    }

    -#define PROPERTY_ENTRY_U8(_name_, _val_) \
    - __PROPERTY_ENTRY_INTEGER(_name_, u8, U8, _val_)
    -#define PROPERTY_ENTRY_U16(_name_, _val_) \
    - __PROPERTY_ENTRY_INTEGER(_name_, u16, U16, _val_)
    -#define PROPERTY_ENTRY_U32(_name_, _val_) \
    - __PROPERTY_ENTRY_INTEGER(_name_, u32, U32, _val_)
    -#define PROPERTY_ENTRY_U64(_name_, _val_) \
    - __PROPERTY_ENTRY_INTEGER(_name_, u64, U64, _val_)
    -
    -#define PROPERTY_ENTRY_STRING(_name_, _val_) \
    -(struct property_entry) { \
    - .name = _name_, \
    - .length = sizeof(const char *), \
    - .type = DEV_PROP_STRING, \
    - { .value = { .str = _val_ } }, \
    -}
    +#define PROPERTY_ENTRY_U8(_name_, _val_) \
    + __PROPERTY_ENTRY_ELEMENT(_name_, u8_data, U8, _val_)
    +#define PROPERTY_ENTRY_U16(_name_, _val_) \
    + __PROPERTY_ENTRY_ELEMENT(_name_, u16_data, U16, _val_)
    +#define PROPERTY_ENTRY_U32(_name_, _val_) \
    + __PROPERTY_ENTRY_ELEMENT(_name_, u32_data, U32, _val_)
    +#define PROPERTY_ENTRY_U64(_name_, _val_) \
    + __PROPERTY_ENTRY_ELEMENT(_name_, u64_data, U64, _val_)
    +#define PROPERTY_ENTRY_STRING(_name_, _val_) \
    + __PROPERTY_ENTRY_ELEMENT(_name_, str, STRING, _val_)

    #define PROPERTY_ENTRY_BOOL(_name_) \
    (struct property_entry) { \
    --
    2.23.0.162.g0b9fbb3734-goog
    \
     
     \ /
      Last update: 2019-09-11 07:13    [W:6.213 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site