FIX BUILD (on Windows): follow changes to make threaded RTS compile with -fasm
[ghc-hetmet.git] / includes / RtsExternal.h
index 3000059..30a5b56 100644 (file)
 /* The standard FFI interface */
 #include "HsFFI.h"
 
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
 /* -----------------------------------------------------------------------------
    Functions exported by the RTS for use in Stg code
    -------------------------------------------------------------------------- */
@@ -26,8 +30,8 @@ extern void newCAF(StgClosure*);
 #endif
 
 /* ToDo: remove? */
-extern I_ genSymZh(void);
-extern I_ resetGenSymZh(void);
+extern HsInt genSymZh(void);
+extern HsInt resetGenSymZh(void);
 
 /* Alternate to raise(3) for threaded rts, for OpenBSD */
 extern int genericRaise(int sig);
@@ -36,8 +40,9 @@ extern int genericRaise(int sig);
 extern int cmp_thread(StgPtr tso1, StgPtr tso2);
 extern int rts_getThreadId(StgPtr tso);
 extern int forkOS_createThread ( HsStablePtr entry );
-extern StgInt forkProcess(HsStablePtr *entry);
-extern StgBool rtsSupportsBoundThreads(void);
+extern pid_t forkProcess(HsStablePtr *entry);
+extern HsBool rtsSupportsBoundThreads(void);
+extern StgInt newSpark (StgRegTable *reg, StgClosure *p);
 
 /* grimy low-level support functions defined in StgPrimFloat.c */
 extern StgDouble __encodeDouble (I_ size, StgByteArray arr, I_ e);
@@ -65,6 +70,21 @@ extern void*  createAdjustor(int cconv, StgStablePtr hptr, StgFunPtr wptr,
                              char *typeString);
 extern void   freeHaskellFunctionPtr(void* ptr);
 
+/* Hpc stuff */
+extern int hs_hpc_module(char *modName,int modCount,int modHashNo,StgWord64 *tixArr);
+// Simple linked list of modules
+typedef struct _HpcModuleInfo {
+  char *modName;               // name of module
+  int tickCount;               // number of ticks
+  int tickOffset;              // offset into a single large .tix Array
+  int hashNo;                  // Hash number for this module's mix info
+  StgWord64 *tixArr;           // tix Array; local for this module
+  struct _HpcModuleInfo *next;
+} HpcModuleInfo;
+
+extern HpcModuleInfo *hs_hpc_rootModule(void);
+
+
 #if defined(mingw32_HOST_OS)
 extern int  rts_InstallConsoleEvent ( int action, StgStablePtr *handler );
 extern void rts_ConsoleHandlerDone  ( int ev );
@@ -72,20 +92,31 @@ extern void rts_ConsoleHandlerDone  ( int ev );
 extern int stg_sig_install (int, int, StgStablePtr *, void *);
 #endif
 
-#if !defined(mingw32_HOST_OS)
+#if defined(mingw32_HOST_OS)
+extern StgInt console_handler;
+#else
 extern StgInt *signal_handlers;
 #endif
+
+#if defined(mingw32_HOST_OS)
+void *getIOManagerEvent (void);
+HsWord32 readIOManagerEvent (void);
+void sendIOManagerEvent (HsWord32 event);
+#else
 extern void setIOManagerPipe (int fd);
+#endif
 
 extern void* allocateExec(unsigned int len);
 
+// Breakpoint stuff
+extern int rts_stop_next_breakpoint;
+extern int rts_stop_on_exception;
+extern HsStablePtr rts_breakpoint_io_action;
+
 /* -----------------------------------------------------------------------------
    Storage manager stuff exported
    -------------------------------------------------------------------------- */
 
-/* Prototype for an evacuate-like function */
-typedef void (*evac_fn)(StgClosure **);
-
 extern void performGC(void);
 extern void performMajorGC(void);
 extern HsInt64 getAllocations( void );