Hi,

"Bert Wesarg" <[EMAIL PROTECTED]> writes:

> On Jan 20, 2008 12:25 PM, Jan Engelhardt <[EMAIL PROTECTED]> wrote:
>>
>> On Jan 20 2008 20:48, Rusty Russell wrote:
>> >+ */
>> >+#define kthread_create(threadfn, data, namefmt...) ({         \
>> >+      int (*_threadfn)(typeof(data)) = (threadfn);            \
>> >+      __kthread_create((void *)_threadfn, (data), namefmt);   \
>> >+})
>>
>> If you have namefmt... you need that varagrs cpp trick. IIRC:
>>
>>         __kthread_create((void *)_threadfn, (data), namefmt, __VA_ARGS__);
> almost
>
> either:
>
> #define kthread_create(threadfn, data, ...) ({         \
>         __kthread_create((void *)_threadfn, (data), __VA_ARGS__);
>

No.  This is bad because it gives the impression that it takes only two
essential arguments which is not the case.

> or:
>
> #define kthread_create(threadfn, data, namefmt, ...) ({         \
>         __kthread_create((void *)_threadfn, (data), namefmt, ##__VA_ARGS__);
>

This is better.  I prefer naming the rest args instead of using __VA_ARGS__:

#define kthread_create(threadfn, data, namefmt, fmtargs...) ({ \
        ... \
        __kthread_create((void *)_threadfn, (data), namefmt, ## fmtargs) \
})

but I think that is just a matter of taste.

        Hannes
--
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