summaryrefslogtreecommitdiff
path: root/rts/Papi.h
diff options
context:
space:
mode:
authorSimon Marlow <simonmar@microsoft.com>2007-10-31 16:30:15 +0000
committerSimon Marlow <simonmar@microsoft.com>2007-10-31 16:30:15 +0000
commita84385fa752d8fa800a2155cce95f47c68b74e2b (patch)
tree1b3ad17775a99b9149fbfec56fd8e68760abfe13 /rts/Papi.h
parentbf4d6a58a1079b944ffc4bdd41d57403a7727046 (diff)
downloadhaskell-a84385fa752d8fa800a2155cce95f47c68b74e2b.tar.gz
Refactor PAPI support, and add profiling of multithreaded GC
Diffstat (limited to 'rts/Papi.h')
-rw-r--r--rts/Papi.h34
1 files changed, 7 insertions, 27 deletions
diff --git a/rts/Papi.h b/rts/Papi.h
index 835eea6473..eaabdf5495 100644
--- a/rts/Papi.h
+++ b/rts/Papi.h
@@ -5,41 +5,21 @@
*
* ---------------------------------------------------------------------------*/
-
-#include <papi.h>
-
-
-
-#define PAPI_CHECK(CALL) \
- if((papi_error=(CALL)) != PAPI_OK) { \
- debugBelch("PAPI function failed in module %s at line %d with error code %d\n", \
- __FILE__,__LINE__,papi_error); \
- }
-
/* Check the error value of a PAPI call, reporting an error, if needed */
extern int papi_error;
/* While PAPI reporting is going on this flag is on */
extern int papi_is_reporting;
-/* Event sets and counter arrays for GC and mutator */
-
-extern int MutatorEvents;
-extern int GCEvents;
-
-extern long_long MutatorCounters[];
-extern long_long GCCounters[];
-
-long_long papi_counter(long_long values[],int event);
-void papi_report(long_long PapiCounters[]);
-void papi_mut_cycles(void);
-void papi_gc_cycles(void);
-void papi_add_events(int EventSet);
-
-void papi_init_eventsets(void);
+void papi_stats_report(void);
+void papi_init_eventset(int * event_set);
+void papi_init(void);
void papi_start_mutator_count(void);
void papi_stop_mutator_count(void);
void papi_start_gc_count(void);
void papi_stop_gc_count(void);
-
+// for multithreaded GC, each sub-thread uses these functions to count
+// events and aggregate them into the main GC counters.
+void papi_thread_start_gc_count(int event_set);
+void papi_thread_stop_gc_count(int event_set);