[Bug 14195] EINTR in WS_select

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Jan 20 05:51:02 CST 2009


http://bugs.winehq.org/show_bug.cgi?id=14195





--- Comment #8 from Dmitriy Anisimkov <anisimkov at ada-ru.org>  2009-01-20 05:51:02 ---
(In reply to comment #7)
> The patch is wrong, you can't just restart the poll, you need to update the
> timeout.

Wine already have such ignorance without timeout recalculation.

static inline int do_block( int fd, int events, int timeout )
{
  struct pollfd pfd;
  int ret;

  pfd.fd = fd;
  pfd.events = events;

  while ((ret = poll(&pfd, 1, timeout)) < 0)
  {
      if (errno != EINTR)
          return -1;
  }
  if( ret == 0 )
      return 0;
  return pfd.revents;
}

I do not think that timeout recalculation is really necessary.
This situation very rare. If we do not recalculate timeout, we would have
just a bit longer timeout in very rare cases. The timeout is not so explicit
requierments for most cases. On timeout recalculation, we would pay by one more
system call to get system time before call "poll".

Do you really stand on timeout recalculation ?


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list