cvs commit: fptools/ghc/compiler/compMan CompManager.lhs fptools/ghc/driver
PackageSrc.hs fptools/ghc/includes RtsAPI.h fptools/ghc/lib/std
PrelIOBase.lhs PrelTopHandler.hs fptools/ghc/rts Main.c Prelude.h
RtsAPI.c Schedule.c StgMiscClosures.hc fptools/hslibs/lang/doc ...
Simon Marlow
simonmar@glass.cse.ogi.edu
Tue, 22 Jan 2002 05:54:23 -0800
simonmar 2002/01/22 05:54:23 PST
Modified files:
ghc/compiler/compMan CompManager.lhs
ghc/driver PackageSrc.hs
ghc/includes RtsAPI.h
ghc/lib/std PrelIOBase.lhs PrelTopHandler.hs
ghc/rts Main.c Prelude.h RtsAPI.c Schedule.c
StgMiscClosures.hc
hslibs/lang/doc Exception.sgml
testsuite/tests/ghc-regress/concurrent/should_run all.T
Log:
Deadlock is now an exception instead of a return status from
rts_evalIO().
The current behaviour is as follows, and can be changed if necessary:
in the event of a deadlock, the top main thread is taken from the main
thread queue, and if it is blocked on an MVar or an Exception (for
throwTo), then it receives a Deadlock exception. If it is blocked on
a BLACKHOLE, we instead send it the NonTermination exception. Note
that only the main thread gets the exception: it is the responsibility
of the main thread to unblock other threads if necessary.
There's a slight difference in the SMP build: *all* the main threads
get an exception, because clearly none of them may make progress
(compared to the non-SMP situation, where all but the top main thread
are usually blocked).
Revision Changes Path
1.100 +6 -13 fptools/ghc/compiler/compMan/CompManager.lhs
1.56 +1 -0 fptools/ghc/driver/PackageSrc.hs
1.25 +2 -3 fptools/ghc/includes/RtsAPI.h
1.46 +4 -2 fptools/ghc/lib/std/PrelIOBase.lhs
1.2 +4 -1 fptools/ghc/lib/std/PrelTopHandler.hs
1.32 +1 -5 fptools/ghc/rts/Main.c
1.17 +3 -1 fptools/ghc/rts/Prelude.h
1.31 +1 -3 fptools/ghc/rts/RtsAPI.c
1.111 +33 -13 fptools/ghc/rts/Schedule.c
1.72 +6 -6 fptools/ghc/rts/StgMiscClosures.hc
1.20 +16 -0 fptools/hslibs/lang/doc/Exception.sgml
1.8 +2 -0 fptools/testsuite/tests/ghc-regress/concurrent/should_run/all.T