[threads] Inline thread_cleanup into mono_thread_detach_internal (#4119)
[mono.git] / mono / metadata / threadpool-ms-io-kqueue.c
index 093d3399dc947736f20140470c3ef08cfa306aa0..4422b668e8f61c7c2d2a630e1b1cb702dfb5fd56 100644 (file)
@@ -43,13 +43,6 @@ kqueue_init (gint wakeup_pipe_fd)
        return TRUE;
 }
 
-static void
-kqueue_cleanup (void)
-{
-       g_free (kqueue_events);
-       close (kqueue_fd);
-}
-
 static void
 kqueue_register_fd (gint fd, gint events, gboolean is_new)
 {
@@ -88,7 +81,9 @@ kqueue_event_wait (void (*callback) (gint fd, gint events, gpointer user_data),
 
        mono_gc_set_skip_thread (TRUE);
 
+       MONO_ENTER_GC_SAFE;
        ready = kevent (kqueue_fd, NULL, 0, kqueue_events, KQUEUE_NEVENTS, NULL);
+       MONO_EXIT_GC_SAFE;
 
        mono_gc_set_skip_thread (FALSE);
 
@@ -124,7 +119,6 @@ kqueue_event_wait (void (*callback) (gint fd, gint events, gpointer user_data),
 
 static ThreadPoolIOBackend backend_kqueue = {
        .init = kqueue_init,
-       .cleanup = kqueue_cleanup,
        .register_fd = kqueue_register_fd,
        .remove_fd = kqueue_remove_fd,
        .event_wait = kqueue_event_wait,