The conditionals in drvAsynIPPort.c were supposed to handle this case:
#if defined(__rtems__)
# define USE_SOCKTIMEOUT
#else
# define USE_POLL
# if defined(vxWorks)
# define FAKE_POLL
# elif defined(_WIN32)
# if defined(POLLIN)
# define poll(fd,nfd,t) WSAPoll(fd,nfd,t)
# else
# define FAKE_POLL
# endif
# else
# include <sys/poll.h>
# endif
#endif
The intent was to use WSAPoll() only on versions of windows which provided it (and defined POLLIN). Could it be that XP defines POLLIN but doesn't provide WSAPoll()?
What happens if you compile this with -UPOLLIN added to the CFLAGS? If that doesn't help, try adding a '#undef POLLIN' just before the block of conditionals. If t either of those fix the problem we'll have to figure out some other set of conditionals for Windows.
On Nov 15, 2010, at 8:57 AM, Dirk Zimoch wrote:
Hi all,
I have a problem with the latest version of asyn driver on Windows XP. It tries to use a function WSAPoll() that does not exist in XP, only in Vista and newer. However I do not want use an old version of asyn driver without that function because of all the new features and bugfixes.
The code in question is:
#if defined(__rtems__)
# define USE_SOCKTIMEOUT
#else
# define USE_POLL
# if defined(vxWorks)
# define FAKE_POLL
# elif defined(_WIN32)
# if defined(POLLIN)
# define poll(fd,nfd,t) WSAPoll(fd,nfd,t)
# else
# define FAKE_POLL
# endif
# else
# include <sys/poll.h>
# endif
#endif
It seems I have POLLIN defined but no WSAPoll.
I am using the compiler from Visual Studio 10.
Any idea?
Dirk