return TRUE;
}
-static void
-poll_cleanup (void)
-{
- g_free (poll_fds);
-}
-
static void
poll_register_fd (gint fd, gint events, gboolean is_new)
{
poll_fds_capacity *= 2;
g_assert (poll_fds_size <= poll_fds_capacity);
- poll_fds = g_renew (mono_pollfd, poll_fds, poll_fds_capacity);
+ poll_fds = (mono_pollfd *)g_renew (mono_pollfd, poll_fds, poll_fds_capacity);
}
POLL_INIT_FD (&poll_fds [poll_fds_size - 1], fd, poll_event);
ready++;
break;
case -1:
-#if !defined(HOST_WIN32)
if (errno == EBADF)
-#else
- if (WSAGetLastError () == WSAEBADF)
-#endif
{
poll_fds [i].revents |= MONO_POLLNVAL;
ready++;
mono_gc_set_skip_thread (TRUE);
+ MONO_ENTER_GC_SAFE;
ready = mono_poll (poll_fds, poll_fds_size, -1);
+ MONO_EXIT_GC_SAFE;
mono_gc_set_skip_thread (FALSE);
* ENOMEM: we're doomed anyway
*
*/
-#if !defined(HOST_WIN32)
switch (errno)
-#else
- switch (WSAGetLastError ())
-#endif
{
-#if !defined(HOST_WIN32)
case EINTR:
-#else
- case WSAEINTR:
-#endif
{
mono_thread_internal_check_for_interruption_critical (mono_thread_internal_current ());
ready = 0;
break;
}
-#if !defined(HOST_WIN32)
case EBADF:
-#else
- case WSAEBADF:
-#endif
{
ready = poll_mark_bad_fds (poll_fds, poll_fds_size);
break;
}
default:
-#if !defined(HOST_WIN32)
g_error ("poll_event_wait: mono_poll () failed, error (%d) %s", errno, g_strerror (errno));
-#else
- g_error ("poll_event_wait: mono_poll () failed, error (%d)\n", WSAGetLastError ());
-#endif
break;
}
}
static ThreadPoolIOBackend backend_poll = {
.init = poll_init,
- .cleanup = poll_cleanup,
.register_fd = poll_register_fd,
.remove_fd = poll_remove_fd,
.event_wait = poll_event_wait,