X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FPapi.h;h=f8acab7a4b20094f9eea85c11774b9a9274e08fe;hb=661c97c65e5fa47177502e592bb763f752b487ac;hp=940ec51fd9d63fc65c9b341d5f0dc3da28b6c707;hpb=fe07f054d7ae5e10b14d5fed730fe4424dabd587;p=ghc-hetmet.git diff --git a/rts/Papi.h b/rts/Papi.h index 940ec51..f8acab7 100644 --- a/rts/Papi.h +++ b/rts/Papi.h @@ -1,14 +1,14 @@ +/* ----------------------------------------------------------------------------- + * (c) The GHC Team 2006 + * + * Initialization and use of the PAPI performance monitoring library + * + * ---------------------------------------------------------------------------*/ +#ifndef PAPI_H +#define PAPI_H -#include - - - -#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); \ - } +BEGIN_RTS_PRIVATE /* Check the error value of a PAPI call, reporting an error, if needed */ extern int papi_error; @@ -16,22 +16,21 @@ 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_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); +void papi_stop_gc0_count(void); +void papi_stop_gc1_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_gc1_count(int event_set); +void papi_thread_stop_gc1_count(int event_set); +END_RTS_PRIVATE +#endif /* PAPI_H */