/* -----------------------------------------------------------------------------
- * $Id: TSO.h,v 1.32 2003/09/21 22:20:53 wolfgang Exp $
+ * $Id: TSO.h,v 1.34 2004/03/01 14:18:35 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
CostCentreStack *CCCS; /* thread's current CCS */
} StgTSOProfInfo;
#else /* !PROFILING */
+# if defined(SUPPORTS_EMPTY_STRUCTS)
typedef struct {
+ /* empty */
} StgTSOProfInfo;
+# endif
#endif /* PROFILING */
#if defined(PAR)
typedef StgTSOStatBuf StgTSOParInfo;
#else /* !PAR */
+# if defined(SUPPORTS_EMPTY_STRUCTS)
typedef struct {
+ /* empty */
} StgTSOParInfo;
+# endif
#endif /* PAR */
#if defined(DIST)
StgInt revalSlot;
} StgTSODistInfo;
#else /* !DIST */
+# if defined(SUPPORTS_EMPTY_STRUCTS)
typedef struct {
+ /* empty */
} StgTSODistInfo;
+# endif
#endif /* DIST */
#if defined(GRAN)
typedef StgTSOStatBuf StgTSOGranInfo;
#else /* !GRAN */
+# if defined(SUPPORTS_EMPTY_STRUCTS)
typedef struct {
+ /* empty */
} StgTSOGranInfo;
+# endif
#endif /* GRAN */
typedef struct {
} StgTSOTickyInfo;
#else /* !TICKY_TICKY */
+# if defined(SUPPORTS_EMPTY_STRUCTS)
typedef struct {
+ /* empty */
} StgTSOTickyInfo;
+# endif
#endif /* TICKY_TICKY */
typedef enum {
, BlockedOnGA // blocked on a remote closure represented by a Global Address
, BlockedOnGA_NoSend // same as above but without sending a Fetch message
#endif
-#if defined(RTS_SUPPORTS_THREADS)
, BlockedOnCCall
- , BlockedOnCCall_NoUnblockExc // same as above but don't unblock async exceptions
- // in resumeThread()
-#endif
+ , BlockedOnCCall_NoUnblockExc // same as above but don't unblock
+ // async exceptions in resumeThread()
} StgTSOBlockReason;
#if defined(mingw32_TARGET_OS)
StgMutClosure * mut_link; /* TSO's are mutable of course! */
struct StgTSO_* global_link; /* Links all threads together */
- StgTSOWhatNext what_next : 16;
- StgTSOBlockReason why_blocked : 16;
- StgTSOBlockInfo block_info;
- struct StgTSO_* blocked_exceptions;
- StgThreadID id;
- int saved_errno;
+ StgTSOWhatNext what_next : 16;
+ StgTSOBlockReason why_blocked : 16;
+ StgTSOBlockInfo block_info;
+ struct StgTSO_* blocked_exceptions;
+ StgThreadID id;
+ int saved_errno;
+ struct StgMainThread_* main;
- StgTSOTickyInfo ticky;
- StgTSOProfInfo prof;
- StgTSOParInfo par;
- StgTSOGranInfo gran;
- StgTSODistInfo dist;
+ MAYBE_EMPTY_STRUCT(StgTSOTickyInfo,ticky)
+ MAYBE_EMPTY_STRUCT(StgTSOProfInfo,prof)
+ MAYBE_EMPTY_STRUCT(StgTSOParInfo,par)
+ MAYBE_EMPTY_STRUCT(StgTSOGranInfo,gran)
+ MAYBE_EMPTY_STRUCT(StgTSODistInfo,dist)
/* The thread stack... */
StgWord stack_size; /* stack size in *words* */