summaryrefslogtreecommitdiff
path: root/rts/Papi.h
diff options
context:
space:
mode:
authormrchebas@gmail.com <unknown>2006-11-08 17:14:52 +0000
committermrchebas@gmail.com <unknown>2006-11-08 17:14:52 +0000
commitfe07f054d7ae5e10b14d5fed730fe4424dabd587 (patch)
tree37b9be9c87726d5d910e72c195688b029d31a4c5 /rts/Papi.h
parent74a87d705449e2f9ad4021aeebf8149ce35a6a2e (diff)
downloadhaskell-fe07f054d7ae5e10b14d5fed730fe4424dabd587.tar.gz
Addition of PAPI to RTS
This patch still requires the addition of the USE_PAPI define to compile with PAPI. Also, programs must be compiled and linked with the appropriate library flags for papi.
Diffstat (limited to 'rts/Papi.h')
-rw-r--r--rts/Papi.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/rts/Papi.h b/rts/Papi.h
new file mode 100644
index 0000000000..940ec51fd9
--- /dev/null
+++ b/rts/Papi.h
@@ -0,0 +1,37 @@
+
+
+#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_add_events(int EventSet);
+
+void papi_init_eventsets(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);
+
+