From: Paolo Bonzini Date: Wed, 04 Nov 2009 11:14:08 GMT Subject: Re: [PATCH] MSVC: port pthread code to native Windows threads Message-ID: In-Reply-To: <40aa078e0911040250k55fa1920g6eee5657c6e35345@mail.gmail.com> On 11/04/2009 11:50 AM, Erik Faye-Lund wrote: > On Wed, Nov 4, 2009 at 11:37 AM, Andrzej K. Haczewski > wrote: >> +/* >> + * Properly defines thread routine for Windows and POSIX >> + */ >> +#ifndef NO_PTHREADS >> +# ifndef _WIN32 >> +# define THREAD_FUNC(f, a) void *f(void *a) >> +# define THREAD_RETURN(x) return (x) >> +# else >> +# define THREAD_FUNC(f, a) DWORD __stdcall f(LPVOID a) >> +# define THREAD_RETURN(x) return (DWORD)(x); >> +# endif >> +#endif >> + > > Seeing how THREAD_RETURN is only called with NULL-parameter, perhaps > it would be better to do this? > > +/* > + * Properly defines thread routine for Windows and POSIX > + */ > +#ifndef NO_PTHREADS > +# ifndef _WIN32 > +# define THREAD_FUNC(f, a) void *f(void *a) > +# define THREAD_RETURN() return NULL; > +# else > +# define THREAD_FUNC(f, a) DWORD __stdcall f(LPVOID a) > +# define THREAD_RETURN() return 0; > +# endif > +#endif >> + Even better, "return 0" is good under either platform (0 converts to void *), and LPVOID is the same thing as void*, so you can just do #ifndef _WIN32 # define THREAD_RET_TYPE DWORD __stdcall #else # define THREAD_RET_TYPE void * #endif Paolo