/** * @file papi_preset.h * @author Haihang You * you@cs.utk.edu */ #ifndef _PAPI_PRESET /* _PAPI_PRESET */ #define _PAPI_PRESET /** search element for preset events defined for each platform * @internal */ typedef struct hwi_search { /* eventcode should have a more specific name, like papi_preset! -pjm */ unsigned int event_code; /**< Preset code that keys back to sparse preset array */ int derived; /**< Derived type code */ int native[PAPI_EVENTS_IN_DERIVED_EVENT]; /**< array of native event code(s) for this preset event */ char operation[PAPI_2MAX_STR_LEN]; /**< operation string: +,-,*,/,@(number of metrics), $(constant Mhz), %(1000000.0) */ char *note; /**< optional developer notes for this event */ } hwi_search_t; /** collected text and data info for all preset events * @internal */ typedef struct hwi_presets { char *symbol; /**< name of the preset event; i.e. PAPI_TOT_INS, etc. */ char *short_descr; /**< short description of the event for labels, etc. */ char *long_descr; /**< long description (full sentence) */ int derived_int; /**< Derived type code */ unsigned int count; unsigned int event_type; char *postfix; unsigned int code[PAPI_MAX_INFO_TERMS]; char *name[PAPI_MAX_INFO_TERMS]; char *note; } hwi_presets_t; /** This is a general description structure definition for various parameter lists * @internal */ typedef struct hwi_describe { int value; /**< numeric value (from papi.h) */ char *name; /**< name of the element */ char *descr; /**< description of the element */ } hwi_describe_t; extern hwi_search_t *preset_search_map; int _papi_hwi_setup_all_presets( hwi_search_t * findem, int cidx); int _papi_hwi_cleanup_all_presets( void ); int _xml_papi_hwi_setup_all_presets( char *arch); int _papi_load_preset_table( char *name, int type, int cidx ); extern hwi_presets_t _papi_hwi_presets[PAPI_MAX_PRESET_EVENTS]; #endif /* _PAPI_PRESET */