X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FTask.h;h=f91872f9a01e2cbae81eba66fee80e4724db8de6;hb=ea0bfdada955e3f5de8c38b06c831f6dc64ba0f2;hp=c2b58f2c459e105907f2c4a109f3ec2c4676778b;hpb=7effbbbbdfe7eb05c6402fa9337e358e7e9fadde;p=ghc-hetmet.git diff --git a/rts/Task.h b/rts/Task.h index c2b58f2..f91872f 100644 --- a/rts/Task.h +++ b/rts/Task.h @@ -4,6 +4,9 @@ * * Tasks * + * For details on the high-level design, see + * http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Scheduler + * * -------------------------------------------------------------------------*/ #ifndef TASK_H @@ -11,7 +14,7 @@ #include "GetTime.h" -BEGIN_RTS_PRIVATE +#include "BeginPrivate.h" /* Definition of a Task @@ -83,6 +86,9 @@ typedef struct InCall_ { // without owning a Capability in the // first place. + SchedulerStatus stat; // return status + StgClosure ** ret; // return value + struct Task_ *task; // When a Haskell thread makes a foreign call that re-enters @@ -134,8 +140,8 @@ typedef struct Task_ { rtsBool worker; // == rtsTrue if this is a worker Task rtsBool stopped; // this task has stopped or exited Haskell - SchedulerStatus stat; // return status - StgClosure ** ret; // return value + // So that we can detect when a finalizer illegally calls back into Haskell + rtsBool running_finalizers; // Stats that we collect about this task // ToDo: we probably want to put this in a separate TaskStats @@ -264,6 +270,6 @@ setMyTask (Task *task) #endif } -END_RTS_PRIVATE +#include "EndPrivate.h" #endif /* TASK_H */