-<h1>Notification Interface</h1>
+<h2>Internal Runtime Utility Functions</h2>
- <p>Am not sure that we want to document this; This seems like
- an internal interface that third parties would not likely
- use, and if they do, they probably are reading the JIT's
- source code.
+<h3>SHA1 Signatures</h3>
+
+<h4><a name="api:mono_sha1_init">mono_sha1_init</a></h4>
+<h4><a name="api:mono_sha1_update">mono_sha1_update</a></h4>
+<h4><a name="api:mono_sha1_get_digest_from_file">mono_sha1_get_digest_from_file</a></h4>
+<h4><a name="api:mono_sha1_get_digest">mono_sha1_get_digest</a></h4>
+<h4><a name="api:mono_sha1_final">mono_sha1_final</a></h4>
+
+<h3>MD5 Signatures</h3>
+
+<h4><a name="api:mono_md5_init">mono_md5_init</a></h4>
+<h4><a name="api:mono_md5_update">mono_md5_update</a></h4>
+<h4><a name="api:mono_md5_get_digest_from_file">mono_md5_get_digest_from_file</a></h4>
+<h4><a name="api:mono_md5_get_digest">mono_md5_get_digest</a></h4>
+<h4><a name="api:mono_md5_final">mono_md5_final</a></h4>
+
+<h4><a name="api:mono_digest_get_public_token">mono_digest_get_public_token</a></h4>
+
+<h3>Hashtables</h3>
+
+ <p><tt>GHashTable</tt> is used when you need to store object
+ references into a hashtable, objects stored in a
+ <tt>MonoGHashTable</tt> are properly tracked by the garbage
+ collector.
+
+ <p>The <tt>MonoGHashTable</tt> data type has the same API as
+ the GLIB.
+
+<h4><a name="api:mono_g_hash_table_destroy">mono_g_hash_table_destroy</a></h4>
+<h4><a name="api:mono_g_hash_table_foreach">mono_g_hash_table_foreach</a></h4>
+<h4><a name="api:mono_g_hash_table_foreach_remove">mono_g_hash_table_foreach_remove</a></h4>
+<h4><a name="api:mono_g_hash_table_insert">mono_g_hash_table_insert</a></h4>
+<h4><a name="api:mono_g_hash_table_lookup">mono_g_hash_table_lookup</a></h4>
+<h4><a name="api:mono_g_hash_table_lookup_extended">mono_g_hash_table_lookup_extended</a></h4>
+<h4><a name="api:mono_g_hash_table_remove">mono_g_hash_table_remove</a></h4>
+<h4><a name="api:mono_g_hash_table_replace">mono_g_hash_table_replace</a></h4>
+<h4><a name="api:mono_g_hash_table_size">mono_g_hash_table_size</a></h4>
+
+
+<h3>Memory Pools</h3>
+
+ <p>Memory pools are a convenient way of tracking memory
+ allocations that are used for one specific task, they are also
+ faster than using the standard memory allocation procedures,
+ as they are designed to be used only by a single thread at a
+ time.
+
+ <p><tt>MonoMemPool</tt> objects are not thread safe, which
+ means that you should not share the objects across multiple
+ threads without providing proper locking around it (unlike
+ <tt>malloc</tt> and <tt>free</tt> which are thread safe).
+
+ <p>When a <tt>MonoMemPool</tt> is released with
+ <tt>mono_mempool_destroy</tt> all of the of the memory
+ allocated from that memory pool with
+ <tt>mono_mempool_alloc</tt> and <tt>mono_mempool_alloc0</tt>
+ is released.
+
+<h4><a name="api:mono_mempool_new">mono_mempool_new</a></h4>
+<h4><a name="api:mono_mempool_destroy">mono_mempool_destroy</a></h4>
+<h4><a name="api:mono_mempool_alloc">mono_mempool_alloc</a></h4>
+<h4><a name="api:mono_mempool_alloc0">mono_mempool_alloc0</a></h4>
+<h4><a name="api:mono_mempool_invalidate">mono_mempool_invalidate</a></h4>
+<h4><a name="api:mono_mempool_stats">mono_mempool_stats</a></h4>
+<h4><a name="api:mono_mempool_contains_addr">mono_mempool_contains_addr</a></h4>
+
+<h3>Bitsets</h3>
+
+ <p>MonoBitsets are a set of routines used to manipulate sets
+ of bits.
+
+<h4><a name="api:mono_bitset_alloc_size">mono_bitset_alloc_size</a></h4>
+<h4><a name="api:mono_bitset_clear">mono_bitset_clear</a></h4>
+<h4><a name="api:mono_bitset_clear_all">mono_bitset_clear_all</a></h4>
+<h4><a name="api:mono_bitset_clone">mono_bitset_clone</a></h4>
+<h4><a name="api:mono_bitset_copyto">mono_bitset_copyto</a></h4>
+<h4><a name="api:mono_bitset_count">mono_bitset_count</a></h4>
+<h4><a name="api:mono_bitset_equal">mono_bitset_equal</a></h4>
+<h4><a name="api:mono_bitset_find_first">mono_bitset_find_first</a></h4>
+<h4><a name="api:mono_bitset_find_last">mono_bitset_find_last</a></h4>
+<h4><a name="api:mono_bitset_find_start">mono_bitset_find_start</a></h4>
+<h4><a name="api:mono_bitset_foreach">mono_bitset_foreach</a></h4>
+<h4><a name="api:mono_bitset_free">mono_bitset_free</a></h4>
+<h4><a name="api:mono_bitset_intersection">mono_bitset_intersection</a></h4>
+<h4><a name="api:mono_bitset_invert">mono_bitset_invert</a></h4>
+<h4><a name="api:mono_bitset_mem_new">mono_bitset_mem_new</a></h4>
+<h4><a name="api:mono_bitset_new">mono_bitset_new</a></h4>
+<h4><a name="api:mono_bitset_set">mono_bitset_set</a></h4>
+<h4><a name="api:mono_bitset_set_all">mono_bitset_set_all</a></h4>
+<h4><a name="api:mono_bitset_size">mono_bitset_size</a></h4>
+<h4><a name="api:mono_bitset_sub">mono_bitset_sub</a></h4>
+<h4><a name="api:mono_bitset_test">mono_bitset_test</a></h4>
+<h4><a name="api:mono_bitset_test_bulk">mono_bitset_test_bulk</a></h4>
+<h4><a name="api:mono_bitset_union">mono_bitset_union</a></h4>
+<h4><a name="api:mono_bitset_find_first_unset">mono_bitset_find_first_unset</a></h4>
+<h4><a name="api:mono_bitset_intersection_2">mono_bitset_intersection_2</a></h4>
+
+<h3>JIT utilities</h3>
+
+<h4><a name="api:mono_signbit_double">mono_signbit_double</a></h4>
+<h4><a name="api:mono_signbit_float">mono_signbit_float</a></h4>
+
+<h3>Function Pointers</h3>
+
+ <p>To wrap a function pointer into something that the Mono
+ runtime can consume, you should use the mono_create_ftnptr.
+ This is only important if you plan on running on the IA64
+ architecture. Otherwise you can just use the function
+ pointer address.
+
+<h4><a name="api:mono_create_ftnptr">mono_create_ftnptr</a></h4>
+
+
+<h2>Notification Interface</h2>
+
+ <p>This is an internal profiler interface. In general, users
+ would not be using this interface, but would be using the
+ profiler interface.
<p>These methods must be called to notify the profiler of an
event that must be recorded. Mono's JIT engine currently
<h4><a name="api:mono_profiler_startup">mono_profiler_startup</a></h4>
<h4><a name="api:mono_profiler_gc_event">mono_profiler_gc_event</a></h4>
<h4><a name="api:mono_profiler_gc_heap_resize">mono_profiler_gc_heap_resize</a></h4>
-<h4><a name="api:mono_profiler_gc_event">mono_profiler_gc_event</a></h4>
-<h4><a name="api:mono_profiler_gc_heap_resize">mono_profiler_gc_heap_resize</a></h4>
<h4><a name="api:mono_profiler_stat_hit">mono_profiler_stat_hit</a></h4>