* Jason Baron <jba...@akamai.com> wrote:

>  struct static_key {
>       atomic_t enabled;
> +/*
> + * bit 0 => 1 if key is initially true
> + *       0 if initially false
> + * bit 1 => 1 if points to struct static_key_mod
> + *       0 if points to struct jump_entry
> + */
> +     union {
> +             unsigned long type;
> +             struct jump_entry *entries;
> +             struct static_key_mod *next;
> +     };


> +                     key->type = (unsigned long)jlm2 | static_key_type(key);

> +             key->type = (unsigned long)jlm | static_key_type(key);

> +             *prev = (struct static_key_mod *)((unsigned long)jlm->next |
> +                             ((unsigned long)*prev & JUMP_TYPE_MASK));

> +                     key->type = (unsigned long)jlm->entries |
> +                                     static_key_type(key);

I really hate these very ugly type conversions. Is there no cleaner way?

For example the last line could sure be written as:

                        key->entries = jlm->entries;
                        key->type |= static_key_type(key);

right?

Thanks,

        Ingo

Reply via email to