1 <h2>Internal Runtime Utility Functions
</h2>
3 <h3>SHA1 Signatures
</h3>
5 <h4><a name=
"api:mono_sha1_init">mono_sha1_init
</a></h4>
6 <h4><a name=
"api:mono_sha1_update">mono_sha1_update
</a></h4>
7 <h4><a name=
"api:mono_sha1_get_digest_from_file">mono_sha1_get_digest_from_file
</a></h4>
8 <h4><a name=
"api:mono_sha1_get_digest">mono_sha1_get_digest
</a></h4>
9 <h4><a name=
"api:mono_sha1_final">mono_sha1_final
</a></h4>
11 <h3>MD5 Signatures
</h3>
13 <h4><a name=
"api:mono_md5_init">mono_md5_init
</a></h4>
14 <h4><a name=
"api:mono_md5_update">mono_md5_update
</a></h4>
15 <h4><a name=
"api:mono_md5_get_digest_from_file">mono_md5_get_digest_from_file
</a></h4>
16 <h4><a name=
"api:mono_md5_get_digest">mono_md5_get_digest
</a></h4>
17 <h4><a name=
"api:mono_md5_final">mono_md5_final
</a></h4>
19 <h4><a name=
"api:mono_digest_get_public_token">mono_digest_get_public_token
</a></h4>
23 <p><tt>GHashTable
</tt> is used when you need to store object
24 references into a hashtable, objects stored in a
25 <tt>MonoGHashTable
</tt> are properly tracked by the garbage
28 <p>The
<tt>MonoGHashTable
</tt> data type has the same API as
31 <h4><a name=
"api:mono_g_hash_table_destroy">mono_g_hash_table_destroy
</a></h4>
32 <h4><a name=
"api:mono_g_hash_table_foreach">mono_g_hash_table_foreach
</a></h4>
33 <h4><a name=
"api:mono_g_hash_table_foreach_remove">mono_g_hash_table_foreach_remove
</a></h4>
34 <h4><a name=
"api:mono_g_hash_table_insert">mono_g_hash_table_insert
</a></h4>
35 <h4><a name=
"api:mono_g_hash_table_lookup">mono_g_hash_table_lookup
</a></h4>
36 <h4><a name=
"api:mono_g_hash_table_lookup_extended">mono_g_hash_table_lookup_extended
</a></h4>
37 <h4><a name=
"api:mono_g_hash_table_remove">mono_g_hash_table_remove
</a></h4>
38 <h4><a name=
"api:mono_g_hash_table_replace">mono_g_hash_table_replace
</a></h4>
39 <h4><a name=
"api:mono_g_hash_table_size">mono_g_hash_table_size
</a></h4>
44 <p>Memory pools are a convenient way of tracking memory
45 allocations that are used for one specific task, they are also
46 faster than using the standard memory allocation procedures,
47 as they are designed to be used only by a single thread at a
50 <p><tt>MonoMemPool
</tt> objects are not thread safe, which
51 means that you should not share the objects across multiple
52 threads without providing proper locking around it (unlike
53 <tt>malloc
</tt> and
<tt>free
</tt> which are thread safe).
55 <p>When a
<tt>MonoMemPool
</tt> is released with
56 <tt>mono_mempool_destroy
</tt> all of the of the memory
57 allocated from that memory pool with
58 <tt>mono_mempool_alloc
</tt> and
<tt>mono_mempool_alloc0
</tt>
61 <h4><a name=
"api:mono_mempool_new">mono_mempool_new
</a></h4>
62 <h4><a name=
"api:mono_mempool_destroy">mono_mempool_destroy
</a></h4>
63 <h4><a name=
"api:mono_mempool_alloc">mono_mempool_alloc
</a></h4>
64 <h4><a name=
"api:mono_mempool_alloc0">mono_mempool_alloc0
</a></h4>
65 <h4><a name=
"api:mono_mempool_invalidate">mono_mempool_invalidate
</a></h4>
66 <h4><a name=
"api:mono_mempool_stats">mono_mempool_stats
</a></h4>
67 <h4><a name=
"api:mono_mempool_contains_addr">mono_mempool_contains_addr
</a></h4>
71 <p>MonoBitsets are a set of routines used to manipulate sets
74 <h4><a name=
"api:mono_bitset_alloc_size">mono_bitset_alloc_size
</a></h4>
75 <h4><a name=
"api:mono_bitset_clear">mono_bitset_clear
</a></h4>
76 <h4><a name=
"api:mono_bitset_clear_all">mono_bitset_clear_all
</a></h4>
77 <h4><a name=
"api:mono_bitset_clone">mono_bitset_clone
</a></h4>
78 <h4><a name=
"api:mono_bitset_copyto">mono_bitset_copyto
</a></h4>
79 <h4><a name=
"api:mono_bitset_count">mono_bitset_count
</a></h4>
80 <h4><a name=
"api:mono_bitset_equal">mono_bitset_equal
</a></h4>
81 <h4><a name=
"api:mono_bitset_find_first">mono_bitset_find_first
</a></h4>
82 <h4><a name=
"api:mono_bitset_find_last">mono_bitset_find_last
</a></h4>
83 <h4><a name=
"api:mono_bitset_find_start">mono_bitset_find_start
</a></h4>
84 <h4><a name=
"api:mono_bitset_foreach">mono_bitset_foreach
</a></h4>
85 <h4><a name=
"api:mono_bitset_free">mono_bitset_free
</a></h4>
86 <h4><a name=
"api:mono_bitset_intersection">mono_bitset_intersection
</a></h4>
87 <h4><a name=
"api:mono_bitset_invert">mono_bitset_invert
</a></h4>
88 <h4><a name=
"api:mono_bitset_mem_new">mono_bitset_mem_new
</a></h4>
89 <h4><a name=
"api:mono_bitset_new">mono_bitset_new
</a></h4>
90 <h4><a name=
"api:mono_bitset_set">mono_bitset_set
</a></h4>
91 <h4><a name=
"api:mono_bitset_set_all">mono_bitset_set_all
</a></h4>
92 <h4><a name=
"api:mono_bitset_size">mono_bitset_size
</a></h4>
93 <h4><a name=
"api:mono_bitset_sub">mono_bitset_sub
</a></h4>
94 <h4><a name=
"api:mono_bitset_test">mono_bitset_test
</a></h4>
95 <h4><a name=
"api:mono_bitset_test_bulk">mono_bitset_test_bulk
</a></h4>
96 <h4><a name=
"api:mono_bitset_union">mono_bitset_union
</a></h4>
97 <h4><a name=
"api:mono_bitset_find_first_unset">mono_bitset_find_first_unset
</a></h4>
98 <h4><a name=
"api:mono_bitset_intersection_2">mono_bitset_intersection_2
</a></h4>
100 <h3>JIT utilities
</h3>
102 <h4><a name=
"api:mono_signbit_double">mono_signbit_double
</a></h4>
103 <h4><a name=
"api:mono_signbit_float">mono_signbit_float
</a></h4>
105 <h3>Function Pointers
</h3>
107 <p>To wrap a function pointer into something that the Mono
108 runtime can consume, you should use the mono_create_ftnptr.
109 This is only important if you plan on running on the IA64
110 architecture. Otherwise you can just use the function
113 <h4><a name=
"api:mono_create_ftnptr">mono_create_ftnptr
</a></h4>
116 <h2>Notification Interface
</h2>
118 <p>This is an internal profiler interface. In general, users
119 would not be using this interface, but would be using the
122 <p>These methods must be called to notify the profiler of an
123 event that must be recorded. Mono's JIT engine currently
124 calls these routines, but if you are extending Mono in some
125 way these are the methods that you might invoke to notify the
126 profiler of an event.
128 <h4><a name=
"api:mono_profiler_load">mono_profiler_load
</a></h4>
129 <h4><a name=
"api:mono_profiler_allocation">mono_profiler_allocation
</a></h4>
130 <h4><a name=
"api:mono_profiler_stat_hit">mono_profiler_stat_hit
</a></h4>
131 <h4><a name=
"api:mono_profiler_thread_start">mono_profiler_thread_start
</a></h4>
132 <h4><a name=
"api:mono_profiler_thread_end">mono_profiler_thread_end
</a></h4>
133 <h4><a name=
"api:mono_profiler_appdomain_event">mono_profiler_appdomain_event
</a></h4>
134 <h4><a name=
"api:mono_profiler_appdomain_loaded">mono_profiler_appdomain_loaded
</a></h4>
135 <h4><a name=
"api:mono_profiler_assembly_event">mono_profiler_assembly_event
</a></h4>
136 <h4><a name=
"api:mono_profiler_assembly_loaded">mono_profiler_assembly_loaded
</a></h4>
137 <h4><a name=
"api:mono_profiler_class_event">mono_profiler_class_event
</a></h4>
138 <h4><a name=
"api:mono_profiler_class_loaded">mono_profiler_class_loaded
</a></h4>
139 <h4><a name=
"api:mono_profiler_code_transition">mono_profiler_code_transition
</a></h4>
140 <h4><a name=
"api:mono_profiler_method_end_jit">mono_profiler_method_end_jit
</a></h4>
141 <h4><a name=
"api:mono_profiler_method_enter">mono_profiler_method_enter
</a></h4>
142 <h4><a name=
"api:mono_profiler_method_jit">mono_profiler_method_jit
</a></h4>
143 <h4><a name=
"api:mono_profiler_method_leave">mono_profiler_method_leave
</a></h4>
144 <h4><a name=
"api:mono_profiler_module_event">mono_profiler_module_event
</a></h4>
145 <h4><a name=
"api:mono_profiler_module_loaded">mono_profiler_module_loaded
</a></h4>
146 <h4><a name=
"api:mono_profiler_shutdown">mono_profiler_shutdown
</a></h4>
147 <h4><a name=
"api:mono_profiler_startup">mono_profiler_startup
</a></h4>
148 <h4><a name=
"api:mono_profiler_gc_event">mono_profiler_gc_event
</a></h4>
149 <h4><a name=
"api:mono_profiler_gc_heap_resize">mono_profiler_gc_heap_resize
</a></h4>
150 <h4><a name=
"api:mono_profiler_stat_hit">mono_profiler_stat_hit
</a></h4>