X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fappdomain.h;h=7fc842fb046b84da702b63a2e2d9ef36c51ffd2a;hb=f7b9cd57483861ba3b10353d1cc3eb9f1fb26760;hp=cd4d3e0babed42dffd0909e52137ae0c18ca7e43;hpb=dc94e2c2de4a7253eb1c47322c5baf9acdec608f;p=mono.git diff --git a/mono/metadata/appdomain.h b/mono/metadata/appdomain.h index cd4d3e0babe..7fc842fb046 100644 --- a/mono/metadata/appdomain.h +++ b/mono/metadata/appdomain.h @@ -15,129 +15,30 @@ #include #include #include -#include -#include -typedef void (*MonoThreadStartCB) (guint32 tid, gpointer stack_start, +G_BEGIN_DECLS + +typedef void (*MonoThreadStartCB) (gsize tid, gpointer stack_start, gpointer func); -typedef void (*MonoThreadAttachCB) (guint32 tid, gpointer stack_start); - -/* This is a copy of System.AppDomainSetup */ -typedef struct { - MonoObject object; - MonoString *application_base; - MonoString *application_name; - MonoString *cache_path; - MonoString *configuration_file; - MonoString *dynamic_base; - MonoString *license_file; - MonoString *private_bin_path; - MonoString *private_bin_path_probe; - MonoString *shadow_copy_directories; - MonoString *shadow_copy_files; - MonoBoolean publisher_policy; - MonoBoolean path_changed; - int loader_optimization; - MonoBoolean disallow_binding_redirects; - MonoBoolean disallow_code_downloads; -} MonoAppDomainSetup; - -typedef GArray MonoJitInfoTable; - -typedef struct { - guint32 flags; - gpointer try_start; - gpointer try_end; - gpointer handler_start; - union { - guint32 token; - gpointer filter; - } data; -} MonoJitExceptionInfo; - -typedef struct { - MonoMethod *method; - gpointer code_start; - int code_size; - guint32 used_regs; - unsigned num_clauses; - signed exvar_offset; - /* Whenever the code is domain neutral or 'shared' */ - gboolean domain_neutral:1; - MonoJitExceptionInfo *clauses; -} MonoJitInfo; - -typedef struct { - MonoObject obj; - gint32 domain_id; - gint32 context_id; -} MonoAppContext; - -typedef enum { - MONO_APPDOMAIN_CREATED, - MONO_APPDOMAIN_UNLOADING, - MONO_APPDOMAIN_UNLOADED -} MonoAppDomainState; +typedef void (*MonoThreadAttachCB) (gsize tid, gpointer stack_start); typedef struct _MonoAppDomain MonoAppDomain; - -struct _MonoDomain { - MonoAppDomain *domain; - CRITICAL_SECTION lock; - MonoMemPool *mp; - MonoMemPool *code_mp; - MonoGHashTable *env; - GHashTable *assemblies; - MonoAssembly *entry_assembly; - MonoAppDomainSetup *setup; - char *friendly_name; - guint32 state; - MonoGHashTable *ldstr_table; - MonoGHashTable *class_vtable_hash; - MonoGHashTable *proxy_vtable_hash; - MonoGHashTable *static_data_hash; - GHashTable *jit_code_hash; - MonoJitInfoTable *jit_info_table; - /* hashtables for Reflection handles */ - MonoGHashTable *type_hash; - MonoGHashTable *refobject_hash; - /* Needed by Thread:GetDomainID() */ - gint32 domain_id; - /* Used when loading assemblies */ - gchar **search_path; - /* Used by remoting proxies */ - MonoMethod *create_proxy_for_type_method; - MonoMethod *private_invoke_method; - MonoAppContext *default_context; - GHashTable *thread_static_fields; - GHashTable *jump_target_hash; - MonoGHashTable *class_init_trampoline_hash; - /* - * This must be a GHashTable, since these objects can't be finalized - * if the hashtable contains a GC visible reference to them. - */ - GHashTable *finalizable_objects_hash; -}; - -/* This is a copy of System.AppDomain */ -struct _MonoAppDomain { - MonoMarshalByRefObject mbr; - MonoDomain *data; -}; - -extern MonoDomain *mono_root_domain; - -extern HANDLE mono_delegate_semaphore; -extern CRITICAL_SECTION mono_delegate_section; - -#define mono_domain_lock(domain) EnterCriticalSection(&(domain)->lock) -#define mono_domain_unlock(domain) LeaveCriticalSection(&(domain)->lock) +typedef struct _MonoJitInfo MonoJitInfo; typedef void (*MonoDomainFunc) (MonoDomain *domain, gpointer user_data); MonoDomain* mono_init (const char *filename); +MonoDomain * +mono_init_from_assembly (const char *domain_name, const char *filename); + +MonoDomain * +mono_init_version (const char *domain_name, const char *version); + +MonoDomain* +mono_get_root_domain (void); + void mono_runtime_init (MonoDomain *domain, MonoThreadStartCB start_cb, MonoThreadAttachCB attach_cb); @@ -146,27 +47,36 @@ void mono_runtime_cleanup (MonoDomain *domain); void -mono_runtime_install_cleanup (MonoDomainFunc func); +mono_install_runtime_cleanup (MonoDomainFunc func); void mono_runtime_quit (void); -MonoException* -mono_runtime_get_out_of_memory_ex (void); +void +mono_runtime_set_shutting_down (void); + +gboolean +mono_runtime_is_shutting_down (void); + +const char* +mono_check_corlib_version (void); MonoDomain * mono_domain_create (void); -inline MonoDomain * +MonoDomain * mono_domain_get (void); -inline MonoDomain * +MonoDomain * mono_domain_get_by_id (gint32 domainid); -inline gboolean +gint32 +mono_domain_get_id (MonoDomain *domain); + +gboolean mono_domain_set (MonoDomain *domain, gboolean force); -inline void +void mono_domain_set_internal (MonoDomain *domain); gboolean @@ -190,98 +100,99 @@ mono_domain_has_type_resolve (MonoDomain *domain); MonoReflectionAssembly * mono_domain_try_type_resolve (MonoDomain *domain, char *name, MonoObject *tb); +gboolean +mono_domain_owns_vtable_slot (MonoDomain *domain, gpointer vtable_slot); + void -mono_jit_info_table_add (MonoDomain *domain, MonoJitInfo *ji); +mono_context_init (MonoDomain *domain); + +void +mono_context_set (MonoAppContext *new_context); + +MonoAppContext * +mono_context_get (void); MonoJitInfo * mono_jit_info_table_find (MonoDomain *domain, char *addr); -void -ves_icall_System_AppDomainSetup_InitAppDomainSetup (MonoAppDomainSetup *setup); +/* MonoJitInfo accessors */ -MonoAppDomain * -ves_icall_System_AppDomain_getCurDomain (void); +gpointer +mono_jit_info_get_code_start (MonoJitInfo* ji); -MonoAppDomain * -ves_icall_System_AppDomain_createDomain (MonoString *friendly_name, - MonoAppDomainSetup *setup); +int +mono_jit_info_get_code_size (MonoJitInfo* ji); -MonoObject * -ves_icall_System_AppDomain_GetData (MonoAppDomain *ad, - MonoString *name); +MonoMethod* +mono_jit_info_get_method (MonoJitInfo* ji); -void -ves_icall_System_AppDomain_SetData (MonoAppDomain *ad, - MonoString *name, - MonoObject *data); -MonoAppDomainSetup * -ves_icall_System_AppDomain_getSetup (MonoAppDomain *ad); +MonoImage* +mono_get_corlib (void); -MonoString * -ves_icall_System_AppDomain_getFriendlyName (MonoAppDomain *ad); +MonoClass* +mono_get_object_class (void); -MonoArray * -ves_icall_System_AppDomain_GetAssemblies (MonoAppDomain *ad); +MonoClass* +mono_get_byte_class (void); -MonoReflectionAssembly * -ves_icall_System_Reflection_Assembly_LoadFrom (MonoString *fname); +MonoClass* +mono_get_void_class (void); -MonoReflectionAssembly * -ves_icall_System_AppDomain_LoadAssembly (MonoAppDomain *ad, - MonoReflectionAssemblyName *assRef, - MonoObject *evidence); +MonoClass* +mono_get_boolean_class (void); -gboolean -ves_icall_System_AppDomain_InternalIsFinalizingForUnload (gint32 domain_id); +MonoClass* +mono_get_sbyte_class (void); -void -ves_icall_System_AppDomain_InternalUnload (gint32 domain_id); +MonoClass* +mono_get_int16_class (void); -gint32 -ves_icall_System_AppDomain_ExecuteAssembly (MonoAppDomain *ad, - MonoString *file, - MonoObject *evidence, - MonoArray *args); +MonoClass* +mono_get_uint16_class (void); -void -mono_context_init (MonoDomain *domain); +MonoClass* +mono_get_int32_class (void); -inline void -mono_context_set (MonoAppContext *new_context); +MonoClass* +mono_get_uint32_class (void); -inline MonoAppContext * -mono_context_get (void); +MonoClass* +mono_get_intptr_class (void); -MonoAppDomain * -ves_icall_System_AppDomain_InternalSetDomain (MonoAppDomain *ad); +MonoClass* +mono_get_uintptr_class (void); -MonoAppDomain * -ves_icall_System_AppDomain_InternalSetDomainByID (gint32 domainid); +MonoClass* +mono_get_int64_class (void); -void -ves_icall_System_AppDomain_InternalPushDomainRef (MonoAppDomain *ad); +MonoClass* +mono_get_uint64_class (void); -void -ves_icall_System_AppDomain_InternalPushDomainRefByID (gint32 domain_id); +MonoClass* +mono_get_single_class (void); -void -ves_icall_System_AppDomain_InternalPopDomainRef (void); +MonoClass* +mono_get_double_class (void); -MonoAppContext * -ves_icall_System_AppDomain_InternalGetContext (void); +MonoClass* +mono_get_char_class (void); -MonoAppContext * -ves_icall_System_AppDomain_InternalGetDefaultContext (void); +MonoClass* +mono_get_string_class (void); -MonoAppContext * -ves_icall_System_AppDomain_InternalSetContext (MonoAppContext *mc); +MonoClass* +mono_get_enum_class (void); -gint32 -ves_icall_System_AppDomain_GetIDFromDomain (MonoAppDomain * ad); +MonoClass* +mono_get_array_class (void); -MonoString * -ves_icall_System_AppDomain_InternalGetProcessGuid (MonoString* newguid); +MonoClass* +mono_get_thread_class (void); +MonoClass* +mono_get_exception_class (void); +G_END_DECLS #endif /* _MONO_METADATA_APPDOMAIN_H_ */ +