Rts flags cleanup
[ghc.git] / includes / Rts.h
index bea4c47..3d4538f 100644 (file)
@@ -6,7 +6,7 @@
  * exposes externally.
  *
  * To understand the structure of the RTS headers, see the wiki:
- *   http://hackage.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes
+ *   http://ghc.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes
  *
  * ---------------------------------------------------------------------------*/
 
@@ -41,15 +41,6 @@ extern "C" {
 #include "rts/Types.h"
 
 #if __GNUC__ >= 3
-/* Assume that a flexible array member at the end of a struct
- * can be defined thus: T arr[]; */
-#define FLEXIBLE_ARRAY
-#else
-/* Assume that it must be defined thus: T arr[0]; */
-#define FLEXIBLE_ARRAY 0
-#endif
-
-#if __GNUC__ >= 3
 #define ATTRIBUTE_ALIGNED(n) __attribute__((aligned(n)))
 #else
 #define ATTRIBUTE_ALIGNED(n) /*nothing*/
@@ -99,16 +90,16 @@ extern "C" {
 void _assertFail(const char *filename, unsigned int linenum)
    GNUC3_ATTRIBUTE(__noreturn__);
 
-#define CHECK(predicate)                       \
-       if (predicate)                          \
-           /*null*/;                           \
-       else                                    \
-           _assertFail(__FILE__, __LINE__)
+#define CHECK(predicate)                        \
+        if (predicate)                          \
+            /*null*/;                           \
+        else                                    \
+            _assertFail(__FILE__, __LINE__)
 
 #define CHECKM(predicate, msg, ...)             \
-       if (predicate)                          \
-           /*null*/;                           \
-       else                                    \
+        if (predicate)                          \
+            /*null*/;                           \
+        else                                    \
             barf(msg, ##__VA_ARGS__)
 
 #ifndef DEBUG
@@ -119,7 +110,7 @@ void _assertFail(const char *filename, unsigned int linenum)
 #define ASSERTM(predicate,msg,...) CHECKM(predicate,msg,##__VA_ARGS__)
 #endif /* DEBUG */
 
-/* 
+/*
  * Use this on the RHS of macros which expand to nothing
  * to make sure that the macro can be used in a context which
  * demands a non-empty statement.
@@ -191,7 +182,7 @@ INLINE_HEADER Time fsecondsToTime (double t)
 
 #include "rts/Config.h"
 
-/* Global constaints */
+/* Global constraints */
 #include "rts/Constants.h"
 
 /* Profiling information */
@@ -203,6 +194,7 @@ INLINE_HEADER Time fsecondsToTime (double t)
 #include "rts/SpinLock.h"
 
 #include "rts/Messages.h"
+#include "rts/Threads.h"
 
 /* Storage format definitions */
 #include "rts/storage/FunTypes.h"
@@ -211,7 +203,6 @@ INLINE_HEADER Time fsecondsToTime (double t)
 #include "rts/storage/ClosureTypes.h"
 #include "rts/storage/TSO.h"
 #include "stg/MiscClosures.h" /* InfoTables, closures etc. defined in the RTS */
-#include "rts/storage/SMPClosureOps.h"
 #include "rts/storage/Block.h"
 #include "rts/storage/ClosureMacros.h"
 #include "rts/storage/MBlock.h"
@@ -219,7 +210,6 @@ INLINE_HEADER Time fsecondsToTime (double t)
 
 /* Other RTS external APIs */
 #include "rts/Parallel.h"
-#include "rts/Hooks.h"
 #include "rts/Signals.h"
 #include "rts/BlockSignals.h"
 #include "rts/Hpc.h"
@@ -230,7 +220,6 @@ INLINE_HEADER Time fsecondsToTime (double t)
 #include "rts/Globals.h"
 #include "rts/IOManager.h"
 #include "rts/Linker.h"
-#include "rts/Threads.h"
 #include "rts/Ticky.h"
 #include "rts/Timer.h"
 #include "rts/Stable.h"
@@ -238,9 +227,12 @@ INLINE_HEADER Time fsecondsToTime (double t)
 #include "rts/Utils.h"
 #include "rts/PrimFloat.h"
 #include "rts/Main.h"
+#include "rts/StaticPtrTable.h"
+#include "rts/Libdw.h"
+#include "rts/LibdwPool.h"
 
 /* Misc stuff without a home */
-DLL_IMPORT_RTS extern char **prog_argv;        /* so we can get at these from Haskell */
+DLL_IMPORT_RTS extern char **prog_argv; /* so we can get at these from Haskell */
 DLL_IMPORT_RTS extern int    prog_argc;
 DLL_IMPORT_RTS extern char  *prog_name;
 
@@ -250,7 +242,7 @@ void getWin32ProgArgv(int *argc, wchar_t **argv[]);
 void setWin32ProgArgv(int argc, wchar_t *argv[]);
 #endif
 
-void stackOverflow(void);
+void stackOverflow(StgTSO* tso);
 
 void stg_exit(int n) GNU_ATTRIBUTE(__noreturn__);
 
@@ -259,6 +251,16 @@ int stg_sig_install (int, int, void *);
 #endif
 
 /* -----------------------------------------------------------------------------
+   Ways
+   -------------------------------------------------------------------------- */
+
+// Returns non-zero if the RTS is a profiling version
+int rts_isProfiled(void);
+
+// Returns non-zero if the RTS is a dynamically-linked version
+int rts_isDynamic(void);
+
+/* -----------------------------------------------------------------------------
    RTS Exit codes
    -------------------------------------------------------------------------- */