X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FException.h;h=ea2222344afe3a39d14c6b2a0248aba87b97b0dd;hb=364291e8d628bfb68bb75be991ca28f6a484d089;hp=3e150f96287bf195a697c359401ea7cca83da1a1;hpb=34a98f40dea6d31ced5213b7810dc39b4989c395;p=ghc-hetmet.git diff --git a/ghc/rts/Exception.h b/ghc/rts/Exception.h index 3e150f9..ea22223 100644 --- a/ghc/rts/Exception.h +++ b/ghc/rts/Exception.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: Exception.h,v 1.3 2000/11/13 14:40:37 simonmar Exp $ + * $Id: Exception.h,v 1.8 2004/03/01 14:18:35 simonmar Exp $ * * (c) The GHC Team, 1998-2000 * @@ -7,14 +7,14 @@ * * ---------------------------------------------------------------------------*/ -extern const StgInfoTable stg_blockAsyncExceptionszh_ret_info; -extern const StgInfoTable stg_unblockAsyncExceptionszh_ret_info; +extern const StgRetInfoTable stg_blockAsyncExceptionszh_ret_info; +extern const StgRetInfoTable stg_unblockAsyncExceptionszh_ret_info; /* Determine whether a thread is interruptible (ie. blocked * indefinitely). Interruptible threads can be sent an exception with * killThread# even if they have async exceptions blocked. */ -static __inline__ int +INLINE_HEADER int interruptible(StgTSO *t) { switch (t->why_blocked) { @@ -22,8 +22,13 @@ interruptible(StgTSO *t) case BlockedOnException: case BlockedOnRead: case BlockedOnWrite: +#if defined(mingw32_TARGET_OS) + case BlockedOnDoProc: +#endif case BlockedOnDelay: return 1; + // NB. Threaded blocked on foreign calls (BlockedOnCCall) are + // *not* interruptible. We can't send these threads an exception. default: return 0; }