X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FRaiseAsync.h;h=336ab30e33adb52edf14b03c0c5ef21b9ffc5a77;hp=8e59d51d9f8115bdf94b28ff7ccc6e9a086d2c4f;hb=HEAD;hpb=b1953bbb1ed3cb16497e5447db7487f0c2d9e41a diff --git a/rts/RaiseAsync.h b/rts/RaiseAsync.h index 8e59d51..336ab30 100644 --- a/rts/RaiseAsync.h +++ b/rts/RaiseAsync.h @@ -13,6 +13,9 @@ #define THROWTO_BLOCKED 1 #ifndef CMINUSMINUS + +#include "BeginPrivate.h" + void throwToSingleThreaded (Capability *cap, StgTSO *tso, StgClosure *exception); @@ -20,37 +23,33 @@ void throwToSingleThreaded (Capability *cap, void throwToSingleThreaded_ (Capability *cap, StgTSO *tso, StgClosure *exception, - rtsBool stop_at_atomically, - StgPtr stop_here); + rtsBool stop_at_atomically); void suspendComputation (Capability *cap, StgTSO *tso, - StgPtr stop_here); + StgUpdateFrame *stop_here); -nat throwTo (Capability *cap, // the Capability we hold - StgTSO *source, // the TSO sending the exception - StgTSO *target, // the TSO receiving the exception - StgClosure *exception, // the exception closure - /*[out]*/ void **out // pass to throwToReleaseTarget() - ); +MessageThrowTo *throwTo (Capability *cap, // the Capability we hold + StgTSO *source, + StgTSO *target, + StgClosure *exception); // the exception closure -#ifdef THREADED_RTS -void throwToReleaseTarget (void *tso); -#endif +nat throwToMsg (Capability *cap, + MessageThrowTo *msg); -void maybePerformBlockedException (Capability *cap, StgTSO *tso); +int maybePerformBlockedException (Capability *cap, StgTSO *tso); void awakenBlockedExceptionQueue (Capability *cap, StgTSO *tso); /* 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) { case BlockedOnMVar: - case BlockedOnException: + case BlockedOnMsgThrowTo: case BlockedOnRead: case BlockedOnWrite: #if defined(mingw32_HOST_OS) @@ -65,6 +64,8 @@ interruptible(StgTSO *t) } } +#include "EndPrivate.h" + #endif /* CMINUSMINUS */ #endif /* RAISEASYNC_H */