Better control of the IO manager thread; improvements to deadlock checking
authorSimon Marlow <simonmar@microsoft.com>
Wed, 24 May 2006 12:28:39 +0000 (12:28 +0000)
committerSimon Marlow <simonmar@microsoft.com>
Wed, 24 May 2006 12:28:39 +0000 (12:28 +0000)
commit7a1f8fbdbab99465793c50bd9fb376c950e7e9d7
tree04e40cc95c37d452ed26ca9909b1ff97abe8aeac
parent3065ea2499deee8d4152eaf0804cc92c7217a2ba
Better control of the IO manager thread; improvements to deadlock checking

In the threaded RTS on *nix platforms:

 - we now start the IO manager thread eagerly at startup time
   (previously was started on demand).

 - we now ask the IO manager thread to stop at shutdown

 - In Timer.c:handle_tick, if it looks like we might be in a
   deadlock, instead of calling prodOneCapability() which was known to be
   wrong, we now send a byte down the IO manager's pipe to wake it up.

This also avoids a case of double-acquisition of a mutex, which
happened if prodOneCapability() was called while the current thread
was holding a mutex.
rts/Prelude.h
rts/RtsStartup.c
rts/Timer.c
rts/package.conf.in
rts/posix/Signals.c
rts/posix/Signals.h