Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMassimiliano Mantione <massi@mono-cvs.ximian.com>2008-02-07 12:51:20 +0300
committerMassimiliano Mantione <massi@mono-cvs.ximian.com>2008-02-07 12:51:20 +0300
commitf39662b1fe25649ca64f9ac3143f6471b7764fac (patch)
tree8b47e1d5f89395cfe28f6cab45f944ad1d7c7aeb /libgc/pthread_stop_world.c
parentb7cab28d055617c6966ff739223cbfdf7e509f28 (diff)
* include/gc.h: (GCEventType): Added start-stop the world events.
* pthread_stop_world.c: (GC_stop_world and GC_start_world): hooked svn path=/trunk/mono/; revision=95125
Diffstat (limited to 'libgc/pthread_stop_world.c')
-rw-r--r--libgc/pthread_stop_world.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libgc/pthread_stop_world.c b/libgc/pthread_stop_world.c
index 1ed16132897..04eb3712c26 100644
--- a/libgc/pthread_stop_world.c
+++ b/libgc/pthread_stop_world.c
@@ -414,6 +414,8 @@ static void pthread_stop_world()
/* Caller holds allocation lock. */
void GC_stop_world()
{
+ if (GC_notify_event)
+ GC_notify_event (GC_EVENT_PRE_STOP_WORLD);
/* Make sure all free list construction has stopped before we start. */
/* No new construction can start, since free list construction is */
/* required to acquire and release the GC lock before it starts, */
@@ -433,6 +435,8 @@ void GC_stop_world()
# ifdef PARALLEL_MARK
GC_release_mark_lock();
# endif
+ if (GC_notify_event)
+ GC_notify_event (GC_EVENT_POST_STOP_WORLD);
}
/* Caller holds allocation lock, and has held it continuously since */
@@ -449,6 +453,8 @@ static void pthread_start_world()
# if DEBUG_THREADS
GC_printf0("World starting\n");
# endif
+ if (GC_notify_event)
+ GC_notify_event (GC_EVENT_PRE_START_WORLD);
for (i = 0; i < THREAD_TABLE_SZ; i++) {
for (p = GC_threads[i]; p != 0; p = p -> next) {
@@ -488,6 +494,8 @@ static void pthread_start_world()
}
}
+ if (GC_notify_event)
+ GC_notify_event (GC_EVENT_POST_START_WORLD);
#if DEBUG_THREADS
GC_printf0("World started\n");
#endif