diff options
author | mrchebas@gmail.com <unknown> | 2006-11-08 17:14:52 +0000 |
---|---|---|
committer | mrchebas@gmail.com <unknown> | 2006-11-08 17:14:52 +0000 |
commit | fe07f054d7ae5e10b14d5fed730fe4424dabd587 (patch) | |
tree | 37b9be9c87726d5d910e72c195688b029d31a4c5 /rts/Papi.h | |
parent | 74a87d705449e2f9ad4021aeebf8149ce35a6a2e (diff) | |
download | haskell-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.h | 37 |
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); + + |