[threads] Inline thread_cleanup into mono_thread_detach_internal (#4119)
[mono.git] / mono / metadata / threadpool-ms-io-epoll.c
index bf619214c8557f19a08553296a81a69719ee3d1c..2bc99e105b9cca5e57845d28d8ff21e3a68a305d 100644 (file)
@@ -47,13 +47,6 @@ epoll_init (gint wakeup_pipe_fd)
        return TRUE;
 }
 
-static void
-epoll_cleanup (void)
-{
-       g_free (epoll_events);
-       close (epoll_fd);
-}
-
 static void
 epoll_register_fd (gint fd, gint events, gboolean is_new)
 {
@@ -91,7 +84,9 @@ epoll_event_wait (void (*callback) (gint fd, gint events, gpointer user_data), g
 
        mono_gc_set_skip_thread (TRUE);
 
+       MONO_ENTER_GC_SAFE;
        ready = epoll_wait (epoll_fd, epoll_events, EPOLL_NEVENTS, -1);
+       MONO_EXIT_GC_SAFE;
 
        mono_gc_set_skip_thread (FALSE);
 
@@ -127,7 +122,6 @@ epoll_event_wait (void (*callback) (gint fd, gint events, gpointer user_data), g
 
 static ThreadPoolIOBackend backend_epoll = {
        .init = epoll_init,
-       .cleanup = epoll_cleanup,
        .register_fd = epoll_register_fd,
        .remove_fd = epoll_remove_fd,
        .event_wait = epoll_event_wait,