mono-api-internal.html
   
Mono Internals
	This section documents some of the internal APIs used
	inside Mono that developers extending or altering Mono might
	want to use.
Marshalling functions
 
 
    mono_marshal_alloc
    Prototype: mono_marshal_alloc
  
 
    mono_marshal_asany
    Prototype: mono_marshal_asany
  
 
    mono_marshal_free_array
    Prototype: mono_marshal_free_array
  
 
    mono_marshal_free_asany
    Prototype: mono_marshal_free_asany
  
 
    mono_marshal_free
    Prototype: mono_marshal_free
  
 
    mono_marshal_get_castclass
    Prototype: mono_marshal_get_castclass
  
 
    mono_marshal_get_delegate_begin_invoke
    Prototype: mono_marshal_get_delegate_begin_invoke
  
 
    mono_marshal_get_delegate_end_invoke
    Prototype: mono_marshal_get_delegate_end_invoke
  
 
    mono_marshal_get_delegate_invoke
    Prototype: mono_marshal_get_delegate_invoke
  
 
    mono_marshal_get_icall_wrapper
    Prototype: mono_marshal_get_icall_wrapper
  
 
    mono_marshal_get_isinst
    Prototype: mono_marshal_get_isinst
  
 
    mono_marshal_get_ldfld_remote_wrapper
    Prototype: mono_marshal_get_ldfld_remote_wrapper
  
 
    mono_marshal_get_ldfld_wrapper
    Prototype: mono_marshal_get_ldfld_wrapper
  
 
    mono_marshal_get_managed_wrapper
    Prototype: mono_marshal_get_managed_wrapper
  
 
    mono_marshal_get_native_wrapper
    MonoMethod*
mono_marshal_get_native_wrapper (MonoMethod *method, gboolean check_exceptions, gboolean aot)
Parameters
method: The MonoMethod to wrap.check_exceptions: Whenever to check for pending exceptions
Remarks
	 
	 generates IL code for the pinvoke wrapper (the generated method
	 calls the unmanaged code in piinfo->addr)
  
 
    mono_marshal_get_proxy_cancast
    Prototype: mono_marshal_get_proxy_cancast
  
 
    mono_marshal_get_ptr_to_struct
    MonoMethod*
mono_marshal_get_ptr_to_struct (MonoClass *klass)
Parameters
klass:
Remarks
	 
	 generates IL code for PtrToStructure (IntPtr src, object structure)
  
 
    mono_marshal_get_remoting_invoke_for_target
    Prototype: mono_marshal_get_remoting_invoke_for_target
  
 
    mono_marshal_get_remoting_invoke
    Prototype: mono_marshal_get_remoting_invoke
  
 
    mono_marshal_get_remoting_invoke_with_check
    Prototype: mono_marshal_get_remoting_invoke_with_check
  
 
    mono_marshal_get_runtime_invoke
    Prototype: mono_marshal_get_runtime_invoke
  
 
    mono_marshal_get_stelemref
    Prototype: mono_marshal_get_stelemref
  
 
    mono_marshal_get_stfld_remote_wrapper
    Prototype: mono_marshal_get_stfld_remote_wrapper
  
 
    mono_marshal_get_stfld_wrapper
    Prototype: mono_marshal_get_stfld_wrapper
  
 
    mono_marshal_get_struct_to_ptr
    MonoMethod*
mono_marshal_get_struct_to_ptr (MonoClass *klass)
Parameters
klass:
Remarks
	 
	 generates IL code for StructureToPtr (object structure, IntPtr ptr, bool fDeleteOld)
  
 
    mono_marshal_get_synchronized_wrapper
    Prototype: mono_marshal_get_synchronized_wrapper
  
 
    mono_marshal_get_unbox_wrapper
    Prototype: mono_marshal_get_unbox_wrapper
  
 
    mono_marshal_get_xappdomain_invoke
    Prototype: mono_marshal_get_xappdomain_invoke
  
 
    mono_marshal_load_type_info
    MonoMarshalType*
mono_marshal_load_type_info (MonoClass* klass)
Remarks
	 
	  Initialize klass->marshal_info using information from metadata. This function can
	 recursively call itself, and the caller is responsible to avoid that by calling 
	 mono_marshal_is_loading_type_info () beforehand.
	
	 LOCKING: Acquires the loader lock.
  
 
    mono_marshal_method_from_wrapper
    Prototype: mono_marshal_method_from_wrapper
  
 
    mono_marshal_realloc
    Prototype: mono_marshal_realloc
  
 
    mono_marshal_set_last_error
    void
mono_marshal_set_last_error (void)
Remarks
	 
	 This function is invoked to set the last error value from a P/Invoke call
	 which has SetLastError set.
  
 
    mono_marshal_type_size
    Prototype: mono_marshal_type_size
 Metadata Loading Errors
	The routines in this section are used to cope with errors
	during metadata loading.  Errors in metadata handling can
	happen for many reason, and these include (this is not an
	exhaustive list).
	
		- An assembly referenced is missing.
		
- Fields referenced are missing.
		
- Methods referenced are missing.
	
The mono_loader_set_* routines are invoked during
	metadata loading to flag that an error has happened.  The
	class loading errros are flagged in a per-thread basis.
	In various spots in the runtime the
	mono_loader_get_last_error routine is called to check
	if there was a problem, and then errors are propagated upwards
	on the stack until we reach a point where an exception can be
	raised and no runtime locks are held.
	The mono_loader_error_prepare_exception takes a
	MonoLoaderError structure (the value returned from
	mono_loader_get_last_error), turns that into an
	exception and clears the error condition from the current
	thread.
    mono_loader_set_error_field_load
    Prototype: mono_loader_set_error_field_load
  
 
    mono_loader_set_error_method_load
    Prototype: mono_loader_set_error_method_load
  
 
    mono_loader_set_error_type_load
    void
mono_loader_set_error_type_load (const char *class_name, const char *assembly_name)
Remarks
	 
	 Set the loader error for this thread. 
  
 
    mono_loader_get_last_error
    Prototype: mono_loader_get_last_error
  
 
    mono_loader_clear_error
    void
mono_loader_clear_error (void)
Remarks
	 
	 Disposes any loader error messages on this thread
  
 
    mono_loader_error_prepare_exception
    MonoException*
mono_loader_error_prepare_exception (MonoLoaderError *error)
Parameters
error: The MonoLoaderError to turn into an exception
Remarks
	 
	 This turns a MonoLoaderError into an exception that can be thrown
	 and resets the Mono Loader Error state during this process.
	
 Metadata Loader Locking: Internals
	The locking functions here are used by code in class.c and
	metadata.c to lock access to the shared hashtables inside the
	MonoImage.
	
 
 
    mono_loader_lock
    void
mono_loader_lock (void)
Remarks
	 
	 See docs/thread-safety.txt for the locking strategy.
  
 
    mono_loader_unlock
    Prototype: mono_loader_unlock
 Garbage Collector Internal Interface
	The internal interface of the Mono GC is the interface used
	between the runtime engine and the garbage collector.
	
 
 
    mono_gc_disable
    Prototype: mono_gc_disable
  
 
    mono_gc_enable
    Prototype: mono_gc_enable
  
 
    mono_gc_is_finalizer_thread
    gboolean
mono_gc_is_finalizer_thread (MonoThread *thread)
Parameters
thread: the thread to test.
Remarks
	 
	 In Mono objects are finalized asynchronously on a separate thread.
	 This routine tests whether the 
thread argument represents the
	 finalization thread.
	
	 Returns true if 
thread is the finalization thread.
  
 
    mono_gc_out_of_memory
    Prototype: mono_gc_out_of_memory
  
 
    mono_gc_start_world
    Prototype: mono_gc_start_world
  
 
    mono_gc_stop_world
    Prototype: mono_gc_stop_world
  
 
    mono_gc_alloc_fixed
    Prototype: mono_gc_alloc_fixed
  
 
    mono_gc_enable_events
    Prototype: mono_gc_enable_events
  
 
    mono_gc_free_fixed
    Prototype: mono_gc_free_fixed
  
 
    mono_gc_make_descr_from_bitmap
    Prototype: mono_gc_make_descr_from_bitmap
  
 
    mono_gc_base_init
    Prototype: mono_gc_base_init
  
 
    mono_gc_invoke_finalizers
    Prototype: mono_gc_invoke_finalizers
  
 
    mono_gc_is_gc_thread
    Prototype: mono_gc_is_gc_thread
  
 
    mono_gc_pending_finalizers
    Prototype: mono_gc_pending_finalizers
  
 
    mono_gc_register_thread
    Prototype: mono_gc_register_thread