diff options
author | Simon Marlow <marlowsd@gmail.com> | 2008-05-29 11:10:23 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2008-05-29 11:10:23 +0000 |
commit | 9367b24fde0c3f5efa5934e69571f5834ed43548 (patch) | |
tree | e02dca8632c5d924a79729daf5c3855657d89833 /rts/RtsStartup.c | |
parent | eacbef6dc436008473b333df551937224d901092 (diff) | |
download | haskell-9367b24fde0c3f5efa5934e69571f5834ed43548.tar.gz |
hs_add_root: use use rts_lock()/rts_unlock() for a bit of extra safety
Diffstat (limited to 'rts/RtsStartup.c')
-rw-r--r-- | rts/RtsStartup.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c index 0ce17fe16f..774de72e38 100644 --- a/rts/RtsStartup.c +++ b/rts/RtsStartup.c @@ -330,7 +330,9 @@ hs_add_root(void (*init_root)(void)) { bdescr *bd; nat init_sp; - Capability *cap = &MainCapability; + Capability *cap; + + cap = rts_lock(); if (hs_init_count <= 0) { barf("hs_add_root() must be called after hs_init()"); @@ -357,6 +359,8 @@ hs_add_root(void (*init_root)(void)) // ToDo: make this work in the presence of multiple hs_add_root()s. initProfiling2(); + rts_unlock(cap); + // ditto. #if defined(THREADED_RTS) ioManagerStart(); |