[project @ 2003-07-12 00:11:20 by sof]
[ghc-hetmet.git] / ghc / rts / Exception.h
1 /* -----------------------------------------------------------------------------
2  * $Id: Exception.h,v 1.6 2003/07/12 00:11:20 sof Exp $
3  *
4  * (c) The GHC Team, 1998-2000
5  *
6  * Exception support
7  *
8  * ---------------------------------------------------------------------------*/
9
10 extern const StgRetInfoTable stg_blockAsyncExceptionszh_ret_info;
11 extern const StgRetInfoTable stg_unblockAsyncExceptionszh_ret_info;
12
13 /* Determine whether a thread is interruptible (ie. blocked
14  * indefinitely).  Interruptible threads can be sent an exception with
15  * killThread# even if they have async exceptions blocked.
16  */
17 static __inline__ int
18 interruptible(StgTSO *t)
19 {
20   switch (t->why_blocked) {
21   case BlockedOnMVar:
22   case BlockedOnException:
23   case BlockedOnRead:
24   case BlockedOnWrite:
25 #if defined(mingw32_TARGET_OS)
26   case BlockedOnDoProc:
27 #endif
28   case BlockedOnDelay:
29     return 1;
30   default:
31     return 0;
32   }
33 }