diff options
author | Simon Marlow <simonmar@microsoft.com> | 2007-10-31 16:30:15 +0000 |
---|---|---|
committer | Simon Marlow <simonmar@microsoft.com> | 2007-10-31 16:30:15 +0000 |
commit | a84385fa752d8fa800a2155cce95f47c68b74e2b (patch) | |
tree | 1b3ad17775a99b9149fbfec56fd8e68760abfe13 /rts/Papi.h | |
parent | bf4d6a58a1079b944ffc4bdd41d57403a7727046 (diff) | |
download | haskell-a84385fa752d8fa800a2155cce95f47c68b74e2b.tar.gz |
Refactor PAPI support, and add profiling of multithreaded GC
Diffstat (limited to 'rts/Papi.h')
-rw-r--r-- | rts/Papi.h | 34 |
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); |