[project @ 2000-11-13 14:40:36 by simonmar]
[ghc-hetmet.git] / ghc / rts / Exception.h
1 /* -----------------------------------------------------------------------------
2  * $Id: Exception.h,v 1.3 2000/11/13 14:40:37 simonmar Exp $
3  *
4  * (c) The GHC Team, 1998-2000
5  *
6  * Exception support
7  *
8  * ---------------------------------------------------------------------------*/
9
10 extern const StgInfoTable stg_blockAsyncExceptionszh_ret_info;
11 extern const StgInfoTable 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   case BlockedOnDelay:
26     return 1;
27   default:
28     return 0;
29   }
30 }