Re: [PATCH 2/6] typesafe: kthread_create and kthread_run

From: Johannes Weiner
Date: Sun Jan 20 2008 - 11:24:32 EST


Hi,

"Bert Wesarg" <bert.wesarg@xxxxxxxxxxxxxx> writes:

> On Jan 20, 2008 12:25 PM, Jan Engelhardt <jengelh@xxxxxxxxxxxxxxx> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/