* Johannes Berg <[EMAIL PROTECTED]> wrote:

> > > +#define create_workqueue(name) \
> > > +({                                                               \
> > > + static struct lock_class_key __key;                     \
> > > + struct workqueue_struct *__wq;                          \
> > > +                                                         \
> > > + __wq = __create_workqueue((name), 0, 0, &__key);        \
> > > + __wq;                                                   \
> > > +})
> > 
> > Why do we need __wq ?
> 
> No particular reason I think, I copied some other code doing it that 
> way.

yep, should be fine doing this:

 #define create_workqueue(name)                         \
 ({                                                     \
        static struct lock_class_key __key;             \
                                                        \
        __create_workqueue((name), 0, 0, &__key);       \
 })

(and the return value of __create_workqueue() will be the 'return value' 
of the macro as well.)

> >     + extern struct workqueue_struct *__create_workqueue_key(..., key);
> >     + #define __create_workqueue(...)       \
> >     +       static struct lock_class_key __key;     \
> >     +       __create_workqueue_key(..., key);       \
> > 
> > but this is a matter of taste.

the above macro should at minimum be encapsulated with
do { ... } while (0) so that __create_workqueue() is a single C 
statement.

        Ingo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to