appdomain.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. /**
  2. * \file
  3. * AppDomain functions
  4. *
  5. * Author:
  6. * Dietmar Maurer (dietmar@ximian.com)
  7. *
  8. * (C) 2001 Ximian, Inc.
  9. */
  10. #ifndef _MONO_METADATA_APPDOMAIN_H_
  11. #define _MONO_METADATA_APPDOMAIN_H_
  12. #include <mono/utils/mono-publib.h>
  13. #include <mono/utils/mono-forward.h>
  14. #include <mono/metadata/object.h>
  15. #include <mono/metadata/reflection.h>
  16. MONO_BEGIN_DECLS
  17. typedef void (*MonoThreadStartCB) (intptr_t tid, void* stack_start,
  18. void* func);
  19. typedef void (*MonoThreadAttachCB) (intptr_t tid, void* stack_start);
  20. typedef struct _MonoAppDomain MonoAppDomain;
  21. typedef void (*MonoDomainFunc) (MonoDomain *domain, void* user_data);
  22. typedef void (*MonoJitInfoFunc)(MonoDomain *domain, MonoMethod* method, MonoJitInfo* jinfo, void* user_data);
  23. typedef void (*MonoUnityExceptionFunc) (MonoObject* exc);
  24. typedef void (*MonoDomainAssemblyFunc) (MonoAssembly *assembly, void* user_data);
  25. MONO_API MonoDomain*
  26. mono_init (const char *filename);
  27. MONO_API MonoDomain *
  28. mono_init_from_assembly (const char *domain_name, const char *filename);
  29. MONO_API MonoDomain *
  30. mono_init_version (const char *domain_name, const char *version);
  31. MONO_API MonoDomain*
  32. mono_get_root_domain (void);
  33. MONO_API MONO_RT_EXTERNAL_ONLY void
  34. mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb,
  35. MonoThreadAttachCB attach_cb);
  36. MONO_API void
  37. mono_runtime_cleanup (MonoDomain *domain);
  38. MONO_API void
  39. mono_install_runtime_cleanup (MonoDomainFunc func);
  40. MONO_API MONO_RT_EXTERNAL_ONLY void
  41. mono_runtime_quit (void);
  42. MONO_API void
  43. mono_runtime_set_shutting_down (void);
  44. MONO_API mono_bool
  45. mono_runtime_is_shutting_down (void);
  46. MONO_API const char*
  47. mono_check_corlib_version (void);
  48. MONO_API MonoDomain *
  49. mono_domain_create (void);
  50. MONO_API MONO_RT_EXTERNAL_ONLY MonoDomain *
  51. mono_domain_create_appdomain (char *friendly_name, char *configuration_file);
  52. MONO_API MONO_RT_EXTERNAL_ONLY void
  53. mono_domain_set_config (MonoDomain *domain, const char *base_dir, const char *config_file_name);
  54. MONO_API MonoDomain *
  55. mono_domain_get (void);
  56. MONO_API MonoDomain *
  57. mono_domain_get_by_id (int32_t domainid);
  58. MONO_API int32_t
  59. mono_domain_get_id (MonoDomain *domain);
  60. MONO_API const char *
  61. mono_domain_get_friendly_name (MonoDomain *domain);
  62. MONO_API MONO_RT_EXTERNAL_ONLY mono_bool
  63. mono_domain_set (MonoDomain *domain, mono_bool force);
  64. MONO_API MONO_RT_EXTERNAL_ONLY void
  65. mono_domain_set_internal (MonoDomain *domain);
  66. MONO_API MONO_RT_EXTERNAL_ONLY void
  67. mono_domain_unload (MonoDomain *domain);
  68. MONO_API void
  69. mono_domain_try_unload (MonoDomain *domain, MonoObject **exc, MonoUnityExceptionFunc callback);
  70. MONO_API mono_bool
  71. mono_domain_is_unloading (MonoDomain *domain);
  72. MONO_API MONO_RT_EXTERNAL_ONLY MonoDomain *
  73. mono_domain_from_appdomain (MonoAppDomain *appdomain);
  74. MONO_API void
  75. mono_domain_jit_foreach (MonoDomain *domain, MonoJitInfoFunc func, void *user_data);
  76. MONO_API void
  77. mono_domain_foreach (MonoDomainFunc func, void* user_data);
  78. MONO_API void
  79. mono_domain_assembly_foreach (MonoDomain* domain, MonoDomainAssemblyFunc func, void* user_data);
  80. MONO_API MONO_RT_EXTERNAL_ONLY MonoAssembly *
  81. mono_domain_assembly_open (MonoDomain *domain, const char *name);
  82. MONO_API void
  83. mono_domain_ensure_entry_assembly (MonoDomain *domain, MonoAssembly *assembly);
  84. MONO_API void
  85. mono_set_ignore_version_and_key_when_finding_assemblies_already_loaded(mono_bool value);
  86. MONO_API mono_bool
  87. mono_domain_finalize (MonoDomain *domain, uint32_t timeout);
  88. MONO_API void
  89. mono_domain_free (MonoDomain *domain, mono_bool force);
  90. MONO_API mono_bool
  91. mono_domain_has_type_resolve (MonoDomain *domain);
  92. MONO_API MONO_RT_EXTERNAL_ONLY MonoReflectionAssembly *
  93. mono_domain_try_type_resolve (MonoDomain *domain, char *name, MonoObject *tb);
  94. MONO_API mono_bool
  95. mono_domain_owns_vtable_slot (MonoDomain *domain, void* vtable_slot);
  96. MONO_API MONO_RT_EXTERNAL_ONLY void
  97. mono_context_init (MonoDomain *domain);
  98. MONO_API MONO_RT_EXTERNAL_ONLY void
  99. mono_context_set (MonoAppContext *new_context);
  100. MONO_API MonoAppContext *
  101. mono_context_get (void);
  102. MONO_API int32_t
  103. mono_context_get_id (MonoAppContext *context);
  104. MONO_API int32_t
  105. mono_context_get_domain_id (MonoAppContext *context);
  106. MONO_API MonoJitInfo *
  107. mono_jit_info_table_find (MonoDomain *domain, void* addr);
  108. /* MonoJitInfo accessors */
  109. MONO_API void*
  110. mono_jit_info_get_code_start (MonoJitInfo* ji);
  111. MONO_API int
  112. mono_jit_info_get_code_size (MonoJitInfo* ji);
  113. MONO_API MonoMethod*
  114. mono_jit_info_get_method (MonoJitInfo* ji);
  115. MONO_API MonoImage*
  116. mono_get_corlib (void);
  117. MONO_API MonoClass*
  118. mono_get_object_class (void);
  119. MONO_API MonoClass*
  120. mono_get_byte_class (void);
  121. MONO_API MonoClass*
  122. mono_get_void_class (void);
  123. MONO_API MonoClass*
  124. mono_get_boolean_class (void);
  125. MONO_API MonoClass*
  126. mono_get_sbyte_class (void);
  127. MONO_API MonoClass*
  128. mono_get_int16_class (void);
  129. MONO_API MonoClass*
  130. mono_get_uint16_class (void);
  131. MONO_API MonoClass*
  132. mono_get_int32_class (void);
  133. MONO_API MonoClass*
  134. mono_get_uint32_class (void);
  135. MONO_API MonoClass*
  136. mono_get_intptr_class (void);
  137. MONO_API MonoClass*
  138. mono_get_uintptr_class (void);
  139. MONO_API MonoClass*
  140. mono_get_int64_class (void);
  141. MONO_API MonoClass*
  142. mono_get_uint64_class (void);
  143. MONO_API MonoClass*
  144. mono_get_single_class (void);
  145. MONO_API MonoClass*
  146. mono_get_double_class (void);
  147. MONO_API MonoClass*
  148. mono_get_char_class (void);
  149. MONO_API MonoClass*
  150. mono_get_string_class (void);
  151. MONO_API MonoClass*
  152. mono_get_enum_class (void);
  153. MONO_API MonoClass*
  154. mono_get_array_class (void);
  155. MONO_API MonoClass*
  156. mono_get_thread_class (void);
  157. MONO_API MonoClass*
  158. mono_get_exception_class (void);
  159. MONO_API void
  160. mono_security_enable_core_clr (void);
  161. typedef mono_bool (*MonoCoreClrPlatformCB) (const char *image_name);
  162. MONO_API void
  163. mono_security_set_core_clr_platform_callback (MonoCoreClrPlatformCB callback);
  164. MONO_END_DECLS
  165. #endif /* _MONO_METADATA_APPDOMAIN_H_ */