[io-layer] Extract file (#4255)
[mono.git] / mono / metadata / domain.c
index 26ee185cac717347684b88535fa54ccf7b13c3db..908f572a5ff33369610201492ca721aa7ca93297 100644 (file)
@@ -44,6 +44,7 @@
 #include <mono/metadata/w32semaphore.h>
 #include <mono/metadata/w32event.h>
 #include <mono/metadata/w32process.h>
+#include <mono/metadata/w32file.h>
 #include <metadata/threads.h>
 #include <metadata/profiler-private.h>
 #include <mono/metadata/coree.h>
@@ -484,13 +485,13 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
 #ifndef HOST_WIN32
        mono_w32handle_init ();
        mono_w32handle_namespace_init ();
-       wapi_init ();
 #endif
 
        mono_w32mutex_init ();
        mono_w32semaphore_init ();
        mono_w32event_init ();
        mono_w32process_init ();
+       mono_w32file_init ();
 
 #ifndef DISABLE_PERFCOUNTERS
        mono_perfcounters_init ();
@@ -852,10 +853,7 @@ mono_cleanup (void)
        mono_coop_mutex_destroy (&appdomains_mutex);
 
        mono_w32process_cleanup ();
-
-#ifndef HOST_WIN32
-       wapi_cleanup ();
-#endif
+       mono_w32file_cleanup ();
 }
 
 void
@@ -2013,3 +2011,24 @@ mono_domain_unlock (MonoDomain *domain)
 {
        mono_locks_coop_release (&domain->lock, DomainLock);
 }
+
+GPtrArray*
+mono_domain_get_assemblies (MonoDomain *domain, gboolean refonly)
+{
+       GSList *tmp;
+       GPtrArray *assemblies;
+       MonoAssembly *ass;
+
+       assemblies = g_ptr_array_new ();
+       mono_domain_assemblies_lock (domain);
+       for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
+               ass = (MonoAssembly *)tmp->data;
+               if (refonly != ass->ref_only)
+                       continue;
+               if (ass->corlib_internal)
+                       continue;
+               g_ptr_array_add (assemblies, ass);
+       }
+       mono_domain_assemblies_unlock (domain);
+       return assemblies;
+}