diff options
author | Simon Marlow <marlowsd@gmail.com> | 2010-12-10 09:39:51 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2010-12-10 09:39:51 +0000 |
commit | 00a4cdf7db3ac722db2346416a1b3b891dbc9a0a (patch) | |
tree | 2f3207b3f5254e8a8d101c744587fd93953b921f | |
parent | a201afd3d2c4bef07e4e7682b129f60dbdde0e8a (diff) | |
download | haskell-00a4cdf7db3ac722db2346416a1b3b891dbc9a0a.tar.gz |
Only reset the event log if logging is turned on (addendum to #4512)
-rw-r--r-- | rts/Schedule.c | 8 | ||||
-rw-r--r-- | rts/Trace.c | 8 | ||||
-rw-r--r-- | rts/Trace.h | 1 |
3 files changed, 13 insertions, 4 deletions
diff --git a/rts/Schedule.c b/rts/Schedule.c index bf39c0ac14..0b1dec4085 100644 --- a/rts/Schedule.c +++ b/rts/Schedule.c @@ -1566,11 +1566,11 @@ forkProcess(HsStablePtr *entry initMutex(&cap->running_task->lock); #endif -#if defined(TRACING) - abortEventLogging(); // abort eventlog inherited from parent - initEventLogging(); // child starts its own eventlog +#ifdef TRACING + resetTracing(); #endif - // Now, all OS threads except the thread that forked are + + // Now, all OS threads except the thread that forked are // stopped. We need to stop all Haskell threads, including // those involved in foreign calls. Also we need to delete // all Tasks, because they correspond to OS threads that are diff --git a/rts/Trace.c b/rts/Trace.c index be3fff72d4..53fc25a249 100644 --- a/rts/Trace.c +++ b/rts/Trace.c @@ -106,6 +106,14 @@ void freeTracing (void) } } +void resetTracing (void) +{ + if (eventlog_enabled) { + abortEventLogging(); // abort eventlog inherited from parent + initEventLogging(); // child starts its own eventlog + } +} + /* --------------------------------------------------------------------------- Emitting trace messages/events --------------------------------------------------------------------------- */ diff --git a/rts/Trace.h b/rts/Trace.h index 4f3ebcec63..97d9514751 100644 --- a/rts/Trace.h +++ b/rts/Trace.h @@ -27,6 +27,7 @@ void initTracing (void); void endTracing (void); void freeTracing (void); +void resetTracing (void); #endif /* TRACING */ |