[Coop] ves_icall_System_IOSelector_Add
authorJay Krell <jaykrell@microsoft.com>
Tue, 3 Sep 2019 23:07:29 +0000 (16:07 -0700)
committerLarry Ewing <lewing@microsoft.com>
Wed, 4 Sep 2019 13:36:42 +0000 (08:36 -0500)
Commit migrated from https://github.com/mono/mono/commit/350dd0e2de44a8ea0cfde38fdd3fb6747481e869

src/mono/mono/metadata/icall-def.h
src/mono/mono/metadata/icall-table.h
src/mono/mono/metadata/threadpool-io.c
src/mono/mono/metadata/threadpool-io.h

index e8579ac..39bac41 100644 (file)
@@ -459,7 +459,7 @@ ICALL_TYPE(IOPATH, "System.IO.Path", IOPATH_1)
 HANDLES(IOPATH_1, "get_temp_path", ves_icall_System_IO_get_temp_path, MonoString, 0, ())
 
 ICALL_TYPE(IOSELECTOR, "System.IOSelector", IOSELECTOR_1)
-ICALL(IOSELECTOR_1, "Add", ves_icall_System_IOSelector_Add)
+HANDLES(IOSELECTOR_1, "Add", ves_icall_System_IOSelector_Add, void, 2, (gpointer, MonoIOSelectorJob))
 NOHANDLES(ICALL(IOSELECTOR_2, "Remove", ves_icall_System_IOSelector_Remove))
 
 ICALL_TYPE(MATH, "System.Math", MATH_19)
index 26f6366..e4a2b82 100644 (file)
@@ -207,6 +207,7 @@ typedef MonoStringHandle MonoStringOutHandle;
 #define MONO_HANDLE_TYPE_WRAP_MonoReflectionDynamicMethod      ICALL_HANDLES_WRAP_OBJ
 #define MONO_HANDLE_TYPE_WRAP_MonoException                    ICALL_HANDLES_WRAP_OBJ
 #define MONO_HANDLE_TYPE_WRAP_MonoInternalThread               ICALL_HANDLES_WRAP_OBJ
+#define MONO_HANDLE_TYPE_WRAP_MonoIOSelectorJob                        ICALL_HANDLES_WRAP_OBJ
 #define MONO_HANDLE_TYPE_WRAP_MonoObject                       ICALL_HANDLES_WRAP_OBJ
 #define MONO_HANDLE_TYPE_WRAP_MonoManifestResourceInfo                 ICALL_HANDLES_WRAP_OBJ
 #define MONO_HANDLE_TYPE_WRAP_MonoMulticastDelegate            ICALL_HANDLES_WRAP_OBJ
index 3aee5b7..1a625ec 100644 (file)
@@ -600,9 +600,9 @@ mono_threadpool_io_cleanup (void)
 }
 
 void
-ves_icall_System_IOSelector_Add (gpointer handle, MonoIOSelectorJob *job)
+ves_icall_System_IOSelector_Add (gpointer handle, MonoIOSelectorJobHandle job_handle, MonoError* error)
 {
-       ERROR_DECL (error);
+       MonoIOSelectorJob* const job = MONO_HANDLE_RAW (job_handle);
        ThreadPoolIOUpdate *update;
 
        g_assert (handle);
@@ -624,13 +624,12 @@ ves_icall_System_IOSelector_Add (gpointer handle, MonoIOSelectorJob *job)
                return;
        }
 
-       int fd = GPOINTER_TO_INT (handle);
+       int const fd = GPOINTER_TO_INT (handle);
 
        if (!threadpool_io->backend.can_register_fd (fd)) {
                mono_coop_mutex_unlock (&threadpool_io->updates_lock);
                mono_trace (G_LOG_LEVEL_WARNING, MONO_TRACE_IO_SELECTOR, "Could not register to wait for file descriptor %d", fd);
                mono_error_set_not_supported (error, "Could not register to wait for file descriptor %d", fd);
-               mono_error_set_pending_exception (error);
                return;
        }
 
@@ -708,7 +707,7 @@ mono_threadpool_io_remove_domain_jobs (MonoDomain *domain)
 #else
 
 void
-ves_icall_System_IOSelector_Add (gpointer handle, MonoIOSelectorJob *job)
+ves_icall_System_IOSelector_Add (gpointer handle, MonoIOSelectorJobHandle job_handle, MonoError* error)
 {
        g_assert_not_reached ();
 }
index a71a9f8..da75352 100644 (file)
@@ -13,9 +13,7 @@
 
 typedef struct _MonoIOSelectorJob MonoIOSelectorJob;
 
-ICALL_EXPORT
-void
-ves_icall_System_IOSelector_Add (gpointer handle, MonoIOSelectorJob *job);
+TYPED_HANDLE_DECL (MonoIOSelectorJob);
 
 ICALL_EXPORT
 void