* RTS external APIs. This file declares everything that the GHC RTS
* exposes externally.
*
+ * To understand the structure of the RTS headers, see the wiki:
+ * http://hackage.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes
+ *
* ---------------------------------------------------------------------------*/
#ifndef RTS_H
#define ATTRIBUTE_ALIGNED(n) /*nothing*/
#endif
+// Symbols that are extern, but private to the RTS, are declared
+// with visibility "hidden" to hide them outside the RTS shared
+// library.
+#if !defined(mingw32_HOST_OS)
+#define RTS_PRIVATE GNUC3_ATTRIBUTE(visibility("hidden"))
+#else
+#define RTS_PRIVATE /* disabled: RTS_PRIVATE */
+#endif
+
+#if __GNUC__ > 4
+#define BEGIN_RTS_PRIVATE #pragma GCC visibility push(hidden)
+#define END_RTS_PRIVATE #pragma GCC visibility pop
+#else
+#define BEGIN_RTS_PRIVATE /* disabled: BEGIN_RTS_PRIVATE */
+#define END_RTS_PRIVATE /* disabled: END_RTS_PRIVATE */
+#endif
+
+#if __GNUC__ > 4
+#define RTS_UNLIKELY(p) __builtin_expect((p),0)
+#else
+#define RTS_UNLIKELY(p) p
+#endif
+
/* Fix for mingw stat problem (done here so it's early enough) */
#ifdef mingw32_HOST_OS
#define __MSVCRT__ 1
#include "rts/Parallel.h"
#include "rts/Hooks.h"
#include "rts/Signals.h"
+#include "rts/BlockSignals.h"
#include "rts/Hpc.h"
#include "rts/Flags.h"
#include "rts/Adjustor.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"
+#include "rts/TTY.h"
+#include "rts/Utils.h"
+#include "rts/PrimFloat.h"
/* Misc stuff without a home */
DLL_IMPORT_RTS extern char **prog_argv; /* so we can get at these from Haskell */
}
#endif
-
-/* krc: I put this here because I don't think
- it needs to be visible externally.
- It used to be in StgTicky.h, but I got rid
- of that. */
-
-/* -----------------------------------------------------------------------------
- The StgEntCounter type - needed regardless of TICKY_TICKY
- -------------------------------------------------------------------------- */
-
-typedef struct _StgEntCounter {
- /* Using StgWord for everything, becuase both the C and asm code
- generators make trouble if you try to pack things tighter */
- StgWord registeredp; /* 0 == no, 1 == yes */
- StgInt arity; /* arity (static info) */
- StgInt stk_args; /* # of args off stack */
- /* (rest of args are in registers) */
- char *str; /* name of the thing */
- char *arg_kinds; /* info about the args types */
- StgInt entry_count; /* Trips to fast entry code */
- StgInt allocs; /* number of allocations by this fun */
- struct _StgEntCounter *link;/* link to chain them all together */
-} StgEntCounter;
-
-
#endif /* RTS_H */