File: mono-api-internal.html

package info (click to toggle)
mono 4.6.2.7%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 778,148 kB
  • ctags: 914,052
  • sloc: cs: 5,779,509; xml: 2,773,713; ansic: 432,645; sh: 14,749; makefile: 12,361; perl: 2,488; python: 1,434; cpp: 849; asm: 531; sql: 95; sed: 16; php: 1
file content (134 lines) | stat: -rw-r--r-- 6,995 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<h1>Mono Internals</h1>

	<p>This section documents some of the internal APIs used
	inside Mono that developers extending or altering Mono might
	want to use.

<h2>Strings</h2>

<h3>Other Encodings</h3>

	<p>These routines are used when coping with strings that come
	from Mono's environment, and might be encoded in one or more
	of the external encodings.

	<p>For example, some file systems might historically contain a
	mix of file names with both old and new encodings, typically
	UTF8 for new files, and the old files would be encoded in an 8
	bit character set (ISO-8859-1 for example).
	
	<p>These routines try a number of encodings, those specified
	in the <tt>MONO_ENCODINGS</tt> environment variable and return
	unicode strings that can be used internally.

	<p>See the mono(1) man page for more details.
	
<h4><a name="api:mono_unicode_from_external">mono_unicode_from_external</a></h4>
<h4><a name="api:mono_unicode_to_external">mono_unicode_to_external</a></h4>
<h4><a name="api:mono_utf8_from_external">mono_utf8_from_external</a></h4>

<h2>Marshalling functions</h2>

<h4><a name="api:mono_marshal_alloc">mono_marshal_alloc</a></h4>
<h4><a name="api:mono_marshal_asany">mono_marshal_asany</a></h4>
<h4><a name="api:mono_marshal_free_array">mono_marshal_free_array</a></h4>
<h4><a name="api:mono_marshal_free_asany">mono_marshal_free_asany</a></h4>
<h4><a name="api:mono_marshal_free">mono_marshal_free</a></h4>
<h4><a name="api:mono_marshal_get_castclass">mono_marshal_get_castclass</a></h4>
<h4><a name="api:mono_marshal_get_delegate_begin_invoke">mono_marshal_get_delegate_begin_invoke</a></h4>
<h4><a name="api:mono_marshal_get_delegate_end_invoke">mono_marshal_get_delegate_end_invoke</a></h4>
<h4><a name="api:mono_marshal_get_delegate_invoke">mono_marshal_get_delegate_invoke</a></h4>
<h4><a name="api:mono_marshal_get_icall_wrapper">mono_marshal_get_icall_wrapper</a></h4>
<h4><a name="api:mono_marshal_get_isinst">mono_marshal_get_isinst</a></h4>
<h4><a name="api:mono_marshal_get_ldfld_remote_wrapper">mono_marshal_get_ldfld_remote_wrapper</a></h4> 
<h4><a name="api:mono_marshal_get_ldfld_wrapper">mono_marshal_get_ldfld_wrapper</a></h4>
<h4><a name="api:mono_marshal_get_managed_wrapper">mono_marshal_get_managed_wrapper</a></h4>
<h4><a name="api:mono_marshal_get_native_wrapper">mono_marshal_get_native_wrapper</a></h4>
<h4><a name="api:mono_marshal_get_proxy_cancast">mono_marshal_get_proxy_cancast</a></h4>
<h4><a name="api:mono_marshal_get_ptr_to_struct">mono_marshal_get_ptr_to_struct</a></h4>
<h4><a name="api:mono_marshal_get_remoting_invoke_for_target">mono_marshal_get_remoting_invoke_for_target</a></h4>
<h4><a name="api:mono_marshal_get_remoting_invoke">mono_marshal_get_remoting_invoke</a></h4>
<h4><a name="api:mono_marshal_get_remoting_invoke_with_check">mono_marshal_get_remoting_invoke_with_check</a></h4>
<h4><a name="api:mono_marshal_get_runtime_invoke">mono_marshal_get_runtime_invoke</a></h4>
<h4><a name="api:mono_marshal_get_stelemref">mono_marshal_get_stelemref</a></h4>
<h4><a name="api:mono_marshal_get_stfld_remote_wrapper">mono_marshal_get_stfld_remote_wrapper</a></h4> 
<h4><a name="api:mono_marshal_get_stfld_wrapper">mono_marshal_get_stfld_wrapper</a></h4>
<h4><a name="api:mono_marshal_get_struct_to_ptr">mono_marshal_get_struct_to_ptr</a></h4>
<h4><a name="api:mono_marshal_get_synchronized_wrapper">mono_marshal_get_synchronized_wrapper</a></h4>
<h4><a name="api:mono_marshal_get_unbox_wrapper">mono_marshal_get_unbox_wrapper</a></h4> 
<h4><a name="api:mono_marshal_get_xappdomain_invoke">mono_marshal_get_xappdomain_invoke</a></h4>
<h4><a name="api:mono_marshal_load_type_info">mono_marshal_load_type_info</a></h4>
<h4><a name="api:mono_marshal_method_from_wrapper">mono_marshal_method_from_wrapper</a></h4>
<h4><a name="api:mono_marshal_realloc">mono_marshal_realloc</a></h4>
<h4><a name="api:mono_marshal_set_last_error">mono_marshal_set_last_error</a></h4>
<h4><a name="api:mono_marshal_type_size">mono_marshal_type_size</a></h4>

<h2>Metadata Loading Errors</h2>

	<p>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).

	<ul>
		<li>An assembly referenced is missing.
		<li>Fields referenced are missing.
		<li>Methods referenced are missing.
	</ul>

	<p>The <tt>mono_loader_set_*</tt> routines are invoked during
	metadata loading to flag that an error has happened.  The
	class loading errros are flagged in a per-thread basis.

	<P>In various spots in the runtime the
	<tt>mono_loader_get_last_error</tt> 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.

	<p>The <tt>mono_loader_error_prepare_exception</tt> takes a
	<tt>MonoLoaderError</tt> structure (the value returned from
	<tt>mono_loader_get_last_error</tt>), turns that into an
	exception and clears the error condition from the current
	thread. 
	
<h4><a name="api:mono_loader_set_error_field_load">mono_loader_set_error_field_load</a></h4>
<h4><a name="api:mono_loader_set_error_method_load">mono_loader_set_error_method_load</a></h4>
<h4><a name="api:mono_loader_set_error_type_load">mono_loader_set_error_type_load</a></h4>

<h4><a name="api:mono_loader_get_last_error">mono_loader_get_last_error</a></h4>
<h4><a name="api:mono_loader_clear_error">mono_loader_clear_error</a></h4>
<h4><a name="api:mono_loader_error_prepare_exception">mono_loader_error_prepare_exception</a></h4>

<h2>Metadata Loader Locking: Internals</h2>

	<p>The locking functions here are used by code in class.c and
	metadata.c to lock access to the shared hashtables inside the
	MonoImage.
	
<h4><a name="api:mono_loader_lock">mono_loader_lock</a></h4>
<h4><a name="api:mono_loader_unlock">mono_loader_unlock</a></h4>

<h2>Garbage Collector Internal Interface</h2>

	<p>The internal interface of the Mono GC is the interface used
	between the runtime engine and the garbage collector.
	
<h4><a name="api:mono_gc_disable">mono_gc_disable</a></h4>
<h4><a name="api:mono_gc_enable">mono_gc_enable</a></h4>
<h4><a name="api:mono_gc_start_world">mono_gc_start_world</a></h4>
<h4><a name="api:mono_gc_stop_world">mono_gc_stop_world</a></h4>
<h4><a name="api:mono_gc_alloc_fixed">mono_gc_alloc_fixed</a></h4> 
<h4><a name="api:mono_gc_free_fixed">mono_gc_free_fixed</a></h4> 
<h4><a name="api:mono_gc_make_descr_from_bitmap">mono_gc_make_descr_from_bitmap</a></h4> 


<h4><a name="api:mono_gc_base_init">mono_gc_base_init</a></h4>
<h4><a name="api:mono_gc_invoke_finalizers">mono_gc_invoke_finalizers</a></h4>
<h4><a name="api:mono_gc_is_gc_thread">mono_gc_is_gc_thread</a></h4>
<h4><a name="api:mono_gc_pending_finalizers">mono_gc_pending_finalizers</a></h4>
<h4><a name="api:mono_gc_register_thread">mono_gc_register_thread</a></h4>
<h4><a name="api:mono_gc_finalize_notify">mono_gc_finalize_notify</a></h4>