X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FException.h;h=c20be8f7075e1dda68acbe598e5221132d6ec958;hb=13aca089b924f6ac3cd598e17b471ab38a1e3e78;hp=251a957c9f963e78652d5bfa283c16cc15c00940;hpb=afb300f543ff11b13f07fa620df7ef8b07512c79;p=ghc-hetmet.git diff --git a/ghc/rts/Exception.h b/ghc/rts/Exception.h index 251a957..c20be8f 100644 --- a/ghc/rts/Exception.h +++ b/ghc/rts/Exception.h @@ -1,20 +1,20 @@ /* ----------------------------------------------------------------------------- - * $Id: Exception.h,v 1.2 2000/03/17 10:24:44 simonmar Exp $ + * $Id: Exception.h,v 1.9 2004/08/13 13:09:46 simonmar Exp $ * - * (c) The GHC Team, 1998-1999 + * (c) The GHC Team, 1998-2000 * * Exception support * * ---------------------------------------------------------------------------*/ -extern const StgInfoTable blockAsyncExceptionszh_ret_info; -extern const StgInfoTable 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,9 +22,15 @@ 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; } } +