Hadrian: bump Cabal submodule, install extra dynamic flavours of RTS
[ghc.git] / rts / Profiling.h
index e27ad4c..45725e5 100644 (file)
@@ -6,14 +6,20 @@
  *
  * ---------------------------------------------------------------------------*/
 
-#ifndef PROFILING_H
-#define PROFILING_H
+#pragma once
 
 #include <stdio.h>
 
 #include "BeginPrivate.h"
+#include "Rts.h"
 
-void initProfiling1 (void);
+#if defined(PROFILING)
+#define PROFILING_ONLY(s) s
+#else
+#define PROFILING_ONLY(s) doNothing()
+#endif
+
+void initProfiling  (void);
 void initProfiling2 (void);
 void endProfiling   (void);
 void freeProfiling  (void);
@@ -21,22 +27,28 @@ void freeProfiling  (void);
 extern FILE *prof_file;
 extern FILE *hp_file;
 
-#ifdef PROFILING
+/* A summary of an execution of a profiled program */
+typedef struct {
+    /* Total bytes allocated */
+    uint64_t total_alloc;
+    /* Total number of profiler ticks */
+    unsigned int total_prof_ticks;
+} ProfilerTotals;
 
-void gen_XML_logfile    ( void );
-void reportCCSProfiling ( void );
+#if defined(PROFILING)
 
-void PrintNewStackDecls ( void );
+void reportCCSProfiling ( void );
 
 void fprintCCS( FILE *f, CostCentreStack *ccs );
-void fprintCCS_stderr( CostCentreStack *ccs );
+void fprintCCS_stderr (CostCentreStack *ccs, StgClosure *exception, StgTSO *tso);
+
+bool ignoreCCS (CostCentreStack const *ccs);
+bool ignoreCC (CostCentre const *cc);
 
-#ifdef DEBUG
+#if defined(DEBUG)
 void debugCCS( CostCentreStack *ccs );
 #endif
 
 #endif
 
 #include "EndPrivate.h"
-
-#endif /* PROFILING_H */