On Jan 20, 2008 5:24 PM, Johannes Weiner <[EMAIL PROTECTED]> wrote: > 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. Right, I just forget to mention this in a comment. > > > 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. No, it is a matter of conforming to C99 or to GNU extensions.
Bert > > 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/