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/