PAPI  5.7.0.0
papi.h
Go to the documentation of this file.
1 /****************************/
2 /* THIS IS OPEN SOURCE CODE */
3 /****************************/
4 
22 #ifndef _PAPI
23 #define _PAPI
24 
25 #pragma GCC visibility push(default)
26 
208 /* Definition of PAPI_VERSION format. Note that each of the four
209  * components _must_ be less than 256. Also, the PAPI_VER_CURRENT
210  * masks out the revision and increment. Any revision change is supposed
211  * to be binary compatible between the user application code and the
212  * run-time library. Any modification that breaks this compatibility
213  * _should_ modify the minor version number as to force user applications
214  * to re-compile.
215  */
216 #define PAPI_VERSION_NUMBER(maj,min,rev,inc) (((maj)<<24) | ((min)<<16) | ((rev)<<8) | (inc))
217 #define PAPI_VERSION_MAJOR(x) (((x)>>24) & 0xff)
218 #define PAPI_VERSION_MINOR(x) (((x)>>16) & 0xff)
219 #define PAPI_VERSION_REVISION(x) (((x)>>8) & 0xff)
220 #define PAPI_VERSION_INCREMENT(x)((x) & 0xff)
221 
222 /* This is the official PAPI version */
223 /* The final digit represents the patch count */
224 #define PAPI_VERSION PAPI_VERSION_NUMBER(5,7,0,0)
225 #define PAPI_VER_CURRENT (PAPI_VERSION & 0xffff0000)
226 
227  /* Tests for checking event code type */
228 #define IS_NATIVE( EventCode ) ( ( EventCode & PAPI_NATIVE_MASK ) && !(EventCode & PAPI_PRESET_MASK) )
229 #define IS_PRESET( EventCode ) ( ( EventCode & PAPI_PRESET_MASK ) && !(EventCode & PAPI_NATIVE_MASK) )
230 #define IS_USER_DEFINED( EventCode ) ( ( EventCode & PAPI_PRESET_MASK ) && (EventCode & PAPI_NATIVE_MASK) )
231 
232 #ifdef __cplusplus
233 extern "C"
234 {
235 #endif
236 
237 /* Include files */
238 
239 #include <sys/types.h>
240 #include <limits.h>
241 #include "papiStdEventDefs.h"
242 
252 #define PAPI_OK 0
253 #define PAPI_EINVAL -1
254 #define PAPI_ENOMEM -2
255 #define PAPI_ESYS -3
256 #define PAPI_ECMP -4
257 #define PAPI_ESBSTR -4
258 #define PAPI_ECLOST -5
259 #define PAPI_EBUG -6
260 #define PAPI_ENOEVNT -7
261 #define PAPI_ECNFLCT -8
262 #define PAPI_ENOTRUN -9
263 #define PAPI_EISRUN -10
264 #define PAPI_ENOEVST -11
265 #define PAPI_ENOTPRESET -12
266 #define PAPI_ENOCNTR -13
267 #define PAPI_EMISC -14
268 #define PAPI_EPERM -15
269 #define PAPI_ENOINIT -16
270 #define PAPI_ENOCMP -17
271 #define PAPI_ENOSUPP -18
272 #define PAPI_ENOIMPL -19
273 #define PAPI_EBUF -20
274 #define PAPI_EINVAL_DOM -21
275 #define PAPI_EATTR -22
276 #define PAPI_ECOUNT -23
277 #define PAPI_ECOMBO -24
278 #define PAPI_ECMP_DISABLED -25
279 #define PAPI_NUM_ERRORS 26
281 #define PAPI_NOT_INITED 0
282 #define PAPI_LOW_LEVEL_INITED 1 /* Low level has called library init */
283 #define PAPI_HIGH_LEVEL_INITED 2 /* High level has called library init */
284 #define PAPI_THREAD_LEVEL_INITED 4 /* Threads have been inited */
285 
293 #define PAPI_NULL -1
299 #define PAPI_DOM_USER 0x1
300 #define PAPI_DOM_MIN PAPI_DOM_USER
301 #define PAPI_DOM_KERNEL 0x2
302 #define PAPI_DOM_OTHER 0x4
303 #define PAPI_DOM_SUPERVISOR 0x8
304 #define PAPI_DOM_ALL (PAPI_DOM_USER|PAPI_DOM_KERNEL|PAPI_DOM_OTHER|PAPI_DOM_SUPERVISOR)
305 /* #define PAPI_DOM_DEFAULT PAPI_DOM_USER NOW DEFINED BY COMPONENT */
306 #define PAPI_DOM_MAX PAPI_DOM_ALL
307 #define PAPI_DOM_HWSPEC 0x80000000
318 #define PAPI_USR1_TLS 0x0
319 #define PAPI_USR2_TLS 0x1
320 #define PAPI_HIGH_LEVEL_TLS 0x2
321 #define PAPI_NUM_TLS 0x3
322 #define PAPI_TLS_USR1 PAPI_USR1_TLS
323 #define PAPI_TLS_USR2 PAPI_USR2_TLS
324 #define PAPI_TLS_HIGH_LEVEL PAPI_HIGH_LEVEL_TLS
325 #define PAPI_TLS_NUM PAPI_NUM_TLS
326 #define PAPI_TLS_ALL_THREADS 0x10
332 #define PAPI_USR1_LOCK 0x0
333 #define PAPI_USR2_LOCK 0x1
334 #define PAPI_NUM_LOCK 0x2
335 #define PAPI_LOCK_USR1 PAPI_USR1_LOCK
336 #define PAPI_LOCK_USR2 PAPI_USR2_LOCK
337 #define PAPI_LOCK_NUM PAPI_NUM_LOCK
340 /* Remove this! If it breaks userspace we might have to add it back :( */
341 /* #define PAPI_MPX_DEF_DEG 32 */
342 
346 #define PAPI_VENDOR_UNKNOWN 0
347 #define PAPI_VENDOR_INTEL 1
348 #define PAPI_VENDOR_AMD 2
349 #define PAPI_VENDOR_IBM 3
350 #define PAPI_VENDOR_CRAY 4
351 #define PAPI_VENDOR_SUN 5
352 #define PAPI_VENDOR_FREESCALE 6
353 #define PAPI_VENDOR_ARM 7
354 #define PAPI_VENDOR_MIPS 8
361 #define PAPI_GRN_THR 0x1
362 #define PAPI_GRN_MIN PAPI_GRN_THR
363 #define PAPI_GRN_PROC 0x2
364 #define PAPI_GRN_PROCG 0x4
365 #define PAPI_GRN_SYS 0x8
366 #define PAPI_GRN_SYS_CPU 0x10
367 #define PAPI_GRN_MAX PAPI_GRN_SYS_CPU
373 #define PAPI_STOPPED 0x01
374 #define PAPI_RUNNING 0x02
375 #define PAPI_PAUSED 0x04
376 #define PAPI_NOT_INIT 0x08
377 #define PAPI_OVERFLOWING 0x10
378 #define PAPI_PROFILING 0x20
379 #define PAPI_MULTIPLEXING 0x40
380 #define PAPI_ATTACHED 0x80
381 #define PAPI_CPU_ATTACHED 0x100
387 #define PAPI_QUIET 0
388 #define PAPI_VERB_ECONT 1
389 #define PAPI_VERB_ESTOP 2
395 #define PAPI_PROFIL_POSIX 0x0
396 #define PAPI_PROFIL_RANDOM 0x1
397 #define PAPI_PROFIL_WEIGHTED 0x2
398 #define PAPI_PROFIL_COMPRESS 0x4
399 #define PAPI_PROFIL_BUCKET_16 0x8
400 #define PAPI_PROFIL_BUCKET_32 0x10
401 #define PAPI_PROFIL_BUCKET_64 0x20
402 #define PAPI_PROFIL_FORCE_SW 0x40
403 #define PAPI_PROFIL_DATA_EAR 0x80
404 #define PAPI_PROFIL_INST_EAR 0x100
405 #define PAPI_PROFIL_BUCKETS (PAPI_PROFIL_BUCKET_16 | PAPI_PROFIL_BUCKET_32 | PAPI_PROFIL_BUCKET_64)
408 /* @defgroup overflow_defns Overflow definitions
409  @{ */
410 #define PAPI_OVERFLOW_FORCE_SW 0x40
411 #define PAPI_OVERFLOW_HARDWARE 0x80
417 #define PAPI_MULTIPLEX_DEFAULT 0x0
418 #define PAPI_MULTIPLEX_FORCE_SW 0x1
424 #define PAPI_INHERIT_ALL 1
425 #define PAPI_INHERIT_NONE 0
428 #define PAPI_DETACH 1
429 #define PAPI_DEBUG 2
430 #define PAPI_MULTIPLEX 3
431 #define PAPI_DEFDOM 4
432 #define PAPI_DOMAIN 5
433 #define PAPI_DEFGRN 6
434 #define PAPI_GRANUL 7
435 #define PAPI_DEF_MPX_NS 8
436  //#define PAPI_EDGE_DETECT 9
437  //#define PAPI_INVERT 10
438 #define PAPI_MAX_MPX_CTRS 11
439 #define PAPI_PROFIL 12
440 #define PAPI_PRELOAD 13
441 #define PAPI_CLOCKRATE 14
442 #define PAPI_MAX_HWCTRS 15
443 #define PAPI_HWINFO 16
444 #define PAPI_EXEINFO 17
445 #define PAPI_MAX_CPUS 18
446 #define PAPI_ATTACH 19
447 #define PAPI_SHLIBINFO 20
448 #define PAPI_LIB_VERSION 21
449 #define PAPI_COMPONENTINFO 22
450 /* Currently the following options are only available on Itanium; they may be supported elsewhere in the future */
451 #define PAPI_DATA_ADDRESS 23
452 #define PAPI_INSTR_ADDRESS 24
453 #define PAPI_DEF_ITIMER 25
454 #define PAPI_DEF_ITIMER_NS 26
455 /* Currently the following options are only available on systems using the perf_events component within papi */
456 #define PAPI_CPU_ATTACH 27
457 #define PAPI_INHERIT 28
458 #define PAPI_USER_EVENTS_FILE 29
460 #define PAPI_INIT_SLOTS 64 /*Number of initialized slots in
461  DynamicArray of EventSets */
463 #define PAPI_MIN_STR_LEN 64 /* For small strings, like names & stuff */
464 #define PAPI_MAX_STR_LEN 128 /* For average run-of-the-mill strings */
465 #define PAPI_2MAX_STR_LEN 256 /* For somewhat longer run-of-the-mill strings */
466 #define PAPI_HUGE_STR_LEN 1024 /* This should be defined in terms of a system parameter */
468 #define PAPI_PMU_MAX 40 /* maximum number of pmu's supported by one component */
469 #define PAPI_DERIVED 0x1 /* Flag to indicate that the event is derived */
479 enum {
480  PAPI_ENUM_EVENTS = 0,
484  /* PAPI PRESET section */
498  /* PAPI native event related section */
507 };
509 #define PAPI_ENUM_ALL PAPI_ENUM_EVENTS
510 
511 #define PAPI_PRESET_BIT_MSC (1 << PAPI_PRESET_ENUM_MSC) /* Miscellaneous preset event bit */
512 #define PAPI_PRESET_BIT_INS (1 << PAPI_PRESET_ENUM_INS) /* Instruction related preset event bit */
513 #define PAPI_PRESET_BIT_IDL (1 << PAPI_PRESET_ENUM_IDL) /* Stalled or Idle preset event bit */
514 #define PAPI_PRESET_BIT_BR (1 << PAPI_PRESET_ENUM_BR) /* branch related preset events */
515 #define PAPI_PRESET_BIT_CND (1 << PAPI_PRESET_ENUM_CND) /* conditional preset events */
516 #define PAPI_PRESET_BIT_MEM (1 << PAPI_PRESET_ENUM_MEM) /* memory related preset events */
517 #define PAPI_PRESET_BIT_CACH (1 << PAPI_PRESET_ENUM_CACH) /* cache related preset events */
518 #define PAPI_PRESET_BIT_L1 (1 << PAPI_PRESET_ENUM_L1) /* L1 cache related preset events */
519 #define PAPI_PRESET_BIT_L2 (1 << PAPI_PRESET_ENUM_L2) /* L2 cache related preset events */
520 #define PAPI_PRESET_BIT_L3 (1 << PAPI_PRESET_ENUM_L3) /* L3 cache related preset events */
521 #define PAPI_PRESET_BIT_TLB (1 << PAPI_PRESET_ENUM_TLB) /* Translation Lookaside Buffer events */
522 #define PAPI_PRESET_BIT_FP (1 << PAPI_PRESET_ENUM_FP) /* Floating Point related preset events */
524 #define PAPI_NTV_GROUP_AND_MASK 0x00FF0000 /* bits occupied by group number */
525 #define PAPI_NTV_GROUP_SHIFT 16 /* bit shift to encode group number */
528 /*
529 The Low Level API
530 
531 The following functions represent the low level portion of the
532 PerfAPI. These functions provide greatly increased efficiency and
533 functionality over the high level API presented in the next
534 section. All of the following functions are callable from both C and
535 Fortran except where noted. As mentioned in the introduction, the low
536 level API is only as powerful as the component upon which it is
537 built. Thus some features may not be available on every platform. The
538 converse may also be true, that more advanced features may be
539 available and defined in the header file. The user is encouraged to
540 read the documentation carefully. */
541 
542 
543 #include <signal.h>
544 
545 /* Earlier versions of PAPI define a special long_long type to mask
546  an incompatibility between the Windows compiler and gcc-style compilers.
547  That problem no longer exists, so long_long has been purged from the source.
548  The defines below preserve backward compatibility. Their use is deprecated,
549  but will continue to be supported in the near term.
550 */
551 #define long_long long long
552 #define u_long_long unsigned long long
556  typedef unsigned long PAPI_thread_id_t;
557 
559  typedef struct _papi_all_thr_spec {
560  int num;
562  void **data;
565  typedef void (*PAPI_overflow_handler_t) (int EventSet, void *address,
566  long long overflow_vector, void *context);
568  /* Handle C99 and more recent compilation */
569  /* caddr_t was never approved by POSIX and is obsolete */
570  /* We should probably switch all caddr_t to void * or long */
571 #ifdef __STDC_VERSION__
572  #if (__STDC_VERSION__ >= 199901L)
573  typedef char *caddr_t;
574  #else
575 
576  #endif
577 #endif
578 
580  typedef struct _papi_sprofil {
581  void *pr_base;
582  unsigned pr_size;
583  caddr_t pr_off;
584  unsigned pr_scale;
588  } PAPI_sprofil_t;
589 
591  typedef struct _papi_itimer_option {
592  int itimer_num;
593  int itimer_sig;
594  int ns;
595  int flags;
599  typedef struct _papi_inherit_option {
600  int eventset;
601  int inherit;
605  typedef struct _papi_domain_option {
606  int def_cidx;
607  int eventset;
608  int domain;
612  typedef struct _papi_granularity_option {
613  int def_cidx;
614  int eventset;
615  int granularity;
619  typedef struct _papi_preload_option {
620  char lib_preload_env[PAPI_MAX_STR_LEN];
621  char lib_preload_sep;
622  char lib_dir_env[PAPI_MAX_STR_LEN];
623  char lib_dir_sep;
627  typedef struct _papi_component_option {
628  char name[PAPI_MAX_STR_LEN];
629  char short_name[PAPI_MIN_STR_LEN];
631  char description[PAPI_MAX_STR_LEN];
632  char version[PAPI_MIN_STR_LEN];
633  char support_version[PAPI_MIN_STR_LEN];
634  char kernel_version[PAPI_MIN_STR_LEN];
635  char disabled_reason[PAPI_MAX_STR_LEN];
636  int disabled;
637  int CmpIdx;
638  int num_cntrs;
639  int num_mpx_cntrs;
640  int num_preset_events;
642  int default_domain;
643  int available_domains;
644  int default_granularity;
645  int available_granularities;
646  int hardware_intr_sig;
647 // int opcode_match_width; /**< Width of opcode matcher if exists, 0 if not */
648  int component_type;
649  char *pmu_names[PAPI_PMU_MAX];
650  int reserved[8]; /* */
651  unsigned int hardware_intr:1;
652  unsigned int precise_intr:1;
653  unsigned int posix1b_timers:1;
654  unsigned int kernel_profile:1;
655  unsigned int kernel_multiplex:1;
656 // unsigned int data_address_range:1; /**< Supports data address range limiting */
657 // unsigned int instr_address_range:1; /**< Supports instruction address range limiting */
658  unsigned int fast_counter_read:1;
659  unsigned int fast_real_timer:1;
660  unsigned int fast_virtual_timer:1;
661  unsigned int attach:1;
662  unsigned int attach_must_ptrace:1;
663 // unsigned int edge_detect:1; /**< Supports edge detection on events */
664 // unsigned int invert:1; /**< Supports invert detection on events */
665 // unsigned int profile_ear:1; /**< Supports data/instr/tlb miss address sampling */
666 // unsigned int cntr_groups:1; /**< Underlying hardware uses counter groups (e.g. POWER5)*/
667  unsigned int cntr_umasks:1;
668 // unsigned int cntr_IEAR_events:1; /**< counters support instr event addr register */
669 // unsigned int cntr_DEAR_events:1; /**< counters support data event addr register */
670 // unsigned int cntr_OPCM_events:1; /**< counter events support opcode matching */
671  /* This should be a granularity option */
672  unsigned int cpu:1;
673  unsigned int inherit:1;
674  unsigned int reserved_bits:12;
678  typedef struct _papi_mpx_info {
679  int timer_sig;
680  int timer_num;
681  int timer_us;
684  typedef int (*PAPI_debug_handler_t) (int code);
685 
687  typedef struct _papi_debug_option {
688  int level;
694  typedef struct _papi_address_map {
695  char name[PAPI_HUGE_STR_LEN];
696  caddr_t text_start;
697  caddr_t text_end;
698  caddr_t data_start;
699  caddr_t data_end;
700  caddr_t bss_start;
701  caddr_t bss_end;
706  typedef struct _papi_program_info {
707  char fullname[PAPI_HUGE_STR_LEN];
708  PAPI_address_map_t address_info;
712  typedef struct _papi_shared_lib_info {
713  PAPI_address_map_t *map;
714  int count;
718 typedef char* PAPI_user_defined_events_file_t;
719 
720  /* The following defines and next for structures define the memory hierarchy */
721  /* All sizes are in BYTES */
722  /* Associativity:
723  0: Undefined;
724  1: Direct Mapped
725  SHRT_MAX: Full
726  Other values == associativity
727  */
728 #define PAPI_MH_TYPE_EMPTY 0x0
729 #define PAPI_MH_TYPE_INST 0x1
730 #define PAPI_MH_TYPE_DATA 0x2
731 #define PAPI_MH_TYPE_VECTOR 0x4
732 #define PAPI_MH_TYPE_TRACE 0x8
733 #define PAPI_MH_TYPE_UNIFIED (PAPI_MH_TYPE_INST|PAPI_MH_TYPE_DATA)
734 #define PAPI_MH_CACHE_TYPE(a) (a & 0xf)
735 #define PAPI_MH_TYPE_WT 0x00 /* write-through cache */
736 #define PAPI_MH_TYPE_WB 0x10 /* write-back cache */
737 #define PAPI_MH_CACHE_WRITE_POLICY(a) (a & 0xf0)
738 #define PAPI_MH_TYPE_UNKNOWN 0x000
739 #define PAPI_MH_TYPE_LRU 0x100
740 #define PAPI_MH_TYPE_PSEUDO_LRU 0x200
741 #define PAPI_MH_CACHE_REPLACEMENT_POLICY(a) (a & 0xf00)
742 #define PAPI_MH_TYPE_TLB 0x1000 /* tlb, not memory cache */
743 #define PAPI_MH_TYPE_PREF 0x2000 /* prefetch buffer */
744 #define PAPI_MH_MAX_LEVELS 6 /* # descriptors for each TLB or cache level */
745 #define PAPI_MAX_MEM_HIERARCHY_LEVELS 4
748  typedef struct _papi_mh_tlb_info {
749  int type;
750  int num_entries;
752  int associativity;
756  typedef struct _papi_mh_cache_info {
757  int type;
758  int size;
759  int line_size;
760  int num_lines;
761  int associativity;
765  typedef struct _papi_mh_level_info {
772  typedef struct _papi_mh_info {
773  int levels;
779  typedef struct _papi_hw_info {
780  int ncpu;
781  int threads;
782  int cores;
783  int sockets;
784  int nnodes;
785  int totalcpus;
786  int vendor;
787  char vendor_string[PAPI_MAX_STR_LEN];
788  int model;
789  char model_string[PAPI_MAX_STR_LEN];
790  float revision;
791  int cpuid_family;
792  int cpuid_model;
793  int cpuid_stepping;
795  int cpu_max_mhz;
796  int cpu_min_mhz;
798  PAPI_mh_info_t mem_hierarchy;
799  int virtualized;
800  char virtual_vendor_string[PAPI_MAX_STR_LEN];
802  char virtual_vendor_version[PAPI_MAX_STR_LEN];
805  /* Legacy Values, do not use */
806  float mhz;
807  int clock_mhz;
809  /* For future expansion */
810  int reserved[8];
811 
813 
815  typedef struct _papi_attach_option {
816  int eventset;
817  unsigned long tid;
821  typedef struct _papi_cpu_option {
822  int eventset;
823  unsigned int cpu_num;
827  typedef struct _papi_multiplex_option {
828  int eventset;
829  int ns;
830  int flags;
835  typedef struct _papi_addr_range_option {
836  int eventset;
838  caddr_t end;
839  int start_off;
840  int end_off;
847  typedef union
848  {
861  PAPI_shlib_info_t *shlib_info;
862  PAPI_exe_info_t *exe_info;
870  typedef struct _dmem_t {
871  long long peak;
872  long long size;
873  long long resident;
874  long long high_water_mark;
875  long long shared;
876  long long text;
877  long long library;
878  long long heap;
879  long long locked;
880  long long stack;
881  long long pagesize;
882  long long pte;
885 /* Fortran offsets into PAPI_dmem_info_t structure. */
886 
887 #define PAPIF_DMEM_VMPEAK 1
888 #define PAPIF_DMEM_VMSIZE 2
889 #define PAPIF_DMEM_RESIDENT 3
890 #define PAPIF_DMEM_HIGH_WATER 4
891 #define PAPIF_DMEM_SHARED 5
892 #define PAPIF_DMEM_TEXT 6
893 #define PAPIF_DMEM_LIBRARY 7
894 #define PAPIF_DMEM_HEAP 8
895 #define PAPIF_DMEM_LOCKED 9
896 #define PAPIF_DMEM_STACK 10
897 #define PAPIF_DMEM_PAGESIZE 11
898 #define PAPIF_DMEM_PTE 12
899 #define PAPIF_DMEM_MAXVAL 12
901 #define PAPI_MAX_INFO_TERMS 12 /* should match PAPI_EVENTS_IN_DERIVED_EVENT defined in papi_internal.h */
902 
924 enum {
925  PAPI_LOCATION_CORE = 0,
929 };
932 enum {
933  PAPI_DATATYPE_INT64 = 0,
937 };
940 enum {
943 };
946 enum {
951 };
954 enum {
959 };
961 
962  typedef struct event_info {
963  unsigned int event_code;
965  char symbol[PAPI_HUGE_STR_LEN];
966  char short_descr[PAPI_MIN_STR_LEN];
968  char long_descr[PAPI_HUGE_STR_LEN];
973  int component_index;
974  char units[PAPI_MIN_STR_LEN];
975  int location;
976  int data_type;
977  int value_type;
978  int timescope;
979  int update_type;
980  int update_freq;
982  /* PRESET SPECIFIC FIELDS FOLLOW */
983 
984 
985 
986  unsigned int count;
991  unsigned int event_type;
994  char derived[PAPI_MIN_STR_LEN];
997  char postfix[PAPI_2MAX_STR_LEN];
1002  unsigned int code[PAPI_MAX_INFO_TERMS];
1007  char name[PAPI_MAX_INFO_TERMS]
1008  [PAPI_2MAX_STR_LEN];
1012  char note[PAPI_HUGE_STR_LEN];
1018 
1019 
1020 
1021 
1025  int PAPI_accum(int EventSet, long long * values);
1026  int PAPI_add_event(int EventSet, int Event);
1027  int PAPI_add_named_event(int EventSet, const char *EventName);
1028  int PAPI_add_events(int EventSet, int *Events, int number);
1030  int PAPI_attach(int EventSet, unsigned long tid);
1031  int PAPI_cleanup_eventset(int EventSet);
1032  int PAPI_create_eventset(int *EventSet);
1033  int PAPI_detach(int EventSet);
1034  int PAPI_destroy_eventset(int *EventSet);
1035  int PAPI_enum_event(int *EventCode, int modifier);
1036  int PAPI_enum_cmp_event(int *EventCode, int modifier, int cidx);
1037  int PAPI_event_code_to_name(int EventCode, char *out);
1038  int PAPI_event_name_to_code(const char *in, int *out);
1040  int PAPI_get_event_info(int EventCode, PAPI_event_info_t * info);
1042  const PAPI_hw_info_t *PAPI_get_hardware_info(void);
1044  int PAPI_get_multiplex(int EventSet);
1045  int PAPI_get_opt(int option, PAPI_option_t * ptr);
1046  int PAPI_get_cmp_opt(int option, PAPI_option_t * ptr,int cidx);
1047  long long PAPI_get_real_cyc(void);
1048  long long PAPI_get_real_nsec(void);
1049  long long PAPI_get_real_usec(void);
1051  int PAPI_get_thr_specific(int tag, void **ptr);
1052  int PAPI_get_overflow_event_index(int Eventset, long long overflow_vector, int *array, int *number);
1053  long long PAPI_get_virt_cyc(void);
1054  long long PAPI_get_virt_nsec(void);
1055  long long PAPI_get_virt_usec(void);
1056  int PAPI_is_initialized(void);
1057  int PAPI_library_init(int version);
1058  int PAPI_list_events(int EventSet, int *Events, int *number);
1059  int PAPI_list_threads(unsigned long *tids, int *number);
1060  int PAPI_lock(int);
1061  int PAPI_multiplex_init(void);
1062  int PAPI_num_cmp_hwctrs(int cidx);
1063  int PAPI_num_events(int EventSet);
1064  int PAPI_overflow(int EventSet, int EventCode, int threshold,
1065  int flags, PAPI_overflow_handler_t handler);
1066  void PAPI_perror(const char *msg );
1067  int PAPI_profil(void *buf, unsigned bufsiz, caddr_t offset,
1068  unsigned scale, int EventSet, int EventCode,
1069  int threshold, int flags);
1070  int PAPI_query_event(int EventCode);
1071  int PAPI_query_named_event(const char *EventName);
1072  int PAPI_read(int EventSet, long long * values);
1073  int PAPI_read_ts(int EventSet, long long * values, long long *cyc);
1074  int PAPI_register_thread(void);
1075  int PAPI_remove_event(int EventSet, int EventCode);
1076  int PAPI_remove_named_event(int EventSet, const char *EventName);
1077  int PAPI_remove_events(int EventSet, int *Events, int number);
1078  int PAPI_reset(int EventSet);
1079  int PAPI_set_debug(int level);
1080  int PAPI_set_cmp_domain(int domain, int cidx);
1081  int PAPI_set_domain(int domain);
1082  int PAPI_set_cmp_granularity(int granularity, int cidx);
1083  int PAPI_set_granularity(int granularity);
1084  int PAPI_set_multiplex(int EventSet);
1085  int PAPI_set_opt(int option, PAPI_option_t * ptr);
1086  int PAPI_set_thr_specific(int tag, void *ptr);
1087  void PAPI_shutdown(void);
1088  int PAPI_sprofil(PAPI_sprofil_t * prof, int profcnt, int EventSet, int EventCode, int threshold, int flags);
1089  int PAPI_start(int EventSet);
1090  int PAPI_state(int EventSet, int *status);
1091  int PAPI_stop(int EventSet, long long * values);
1092  char *PAPI_strerror(int);
1093  unsigned long PAPI_thread_id(void);
1094  int PAPI_thread_init(unsigned long (*id_fn) (void));
1095  int PAPI_unlock(int);
1096  int PAPI_unregister_thread(void);
1097  int PAPI_write(int EventSet, long long * values);
1098  int PAPI_get_event_component(int EventCode);
1100  int PAPI_get_component_index(const char *name);
1101  int PAPI_disable_component(int cidx);
1102  int PAPI_disable_component_by_name(const char *name );
1116  int PAPI_accum_counters(long long * values, int array_len);
1117  int PAPI_num_counters(void);
1118  int PAPI_num_components(void);
1119  int PAPI_read_counters(long long * values, int array_len);
1120  int PAPI_start_counters(int *events, int array_len);
1121  int PAPI_stop_counters(long long * values, int array_len);
1122  int PAPI_flips(float *rtime, float *ptime, long long * flpins, float *mflips);
1123  int PAPI_flops(float *rtime, float *ptime, long long * flpops, float *mflops);
1124  int PAPI_ipc(float *rtime, float *ptime, long long * ins, float *ipc);
1125  int PAPI_epc(int event, float *rtime, float *ptime, long long *ref, long long *core, long long *evt, float *epc);
1130 /* Backwards compatibility hacks. Remove eventually? */
1131 int PAPI_num_hwctrs(void);
1132 #define PAPI_COMPONENT_INDEX(a) PAPI_get_event_component(a)
1133 #define PAPI_descr_error(a) PAPI_strerror(a)
1135 #ifdef __cplusplus
1136 }
1137 #endif
1138 
1139 #pragma GCC visibility pop
1140 
1141 #endif
i inherit inherit
int PAPI_stop(int EventSet, long long *values)
Definition: papi.c:2314
int PAPI_is_initialized(void)
Definition: papi.c:6463
static const char * name
Definition: fork_overflow.c:31
const PAPI_component_info_t * PAPI_get_component_info(int cidx)
Definition: papi.c:796
int PAPI_add_event(int EventSet, int Event)
Definition: papi.c:1663
Hardware info structure.
Definition: papi.h:781
long long PAPI_get_virt_usec(void)
Definition: papi.c:6372
int PAPI_set_cmp_granularity(int granularity, int cidx)
Definition: papi.c:5622
int PAPI_reset(int EventSet)
Definition: papi.c:2459
const PAPI_shlib_info_t * PAPI_get_shared_lib_info(void)
Definition: papi.c:6144
int PAPI_disable_component_by_name(const char *name)
Definition: papi.c:6717
static int Events[NUM_EVENTS]
Definition: init_fini.c:8
unsigned long PAPI_thread_id(void)
Definition: papi.c:162
int PAPI_write(int EventSet, long long *values)
Definition: papi.c:2813
int PAPI_ipc(float *rtime, float *ptime, long long *ins, float *ipc)
Definition: papi_hl.c:320
int PAPI_remove_event(int EventSet, int EventCode)
Definition: papi.c:1758
long long PAPI_get_virt_cyc(void)
Definition: papi.c:6300
off64_t offset
Definition: iozone.c:1279
int PAPI_flops(float *rtime, float *ptime, long long *flpops, float *mflops)
Definition: papi_hl.c:263
int PAPI_accum_counters(long long *values, int array_len)
Definition: papi_hl.c:760
int PAPI_num_components(void)
Definition: papi.c:4387
static double array[ARRAYSIZE]
Definition: papi_l1_dca.c:23
int PAPI_enum_event(int *EventCode, int modifier)
Definition: papi.c:1152
int PAPI_thread_init(unsigned long(*id_fn)(void))
int PAPI_detach(int EventSet)
Definition: papi.c:3258
int EventSet
get the executable's info
Definition: papi.h:708
int PAPI_register_thread(void)
Definition: papi.c:208
int PAPI_event_name_to_code(const char *in, int *out)
Definition: papi.c:1004
int PAPI_overflow(int EventSet, int EventCode, int threshold, int flags, PAPI_overflow_handler_t handler)
Definition: papi.c:4788
A pointer to the following is passed to PAPI_set/get_opt()
Definition: papi.h:849
static struct timeval start
char units[MAX_EVENTS][BUFSIZ]
Definition: powercap_plot.c:15
int PAPI_remove_events(int EventSet, int *Events, int number)
Definition: papi.c:5931
long long PAPI_get_virt_nsec(void)
Definition: papi.c:6330
int PAPI_sprofil(PAPI_sprofil_t *prof, int profcnt, int EventSet, int EventCode, int threshold, int flags)
Definition: papi.c:5044
int PAPI_set_opt(int option, PAPI_option_t *ptr)
Definition: papi.c:3465
int PAPI_add_events(int EventSet, int *Events, int number)
Definition: papi.c:5843
#define PAPI_HUGE_STR_LEN
Definition: papi.h:468
int num_native_events
int PAPI_get_event_info(int EventCode, PAPI_event_info_t *info)
Definition: papi.c:835
int PAPI_add_named_event(int EventSet, const char *EventName)
Definition: papi.c:1876
char events[MAX_EVENTS][BUFSIZ]
int multiplex(void)
Definition: multiplex.c:35
int PAPI_set_cmp_domain(int domain, int cidx)
Definition: papi.c:5758
int PAPI_disable_component(int cidx)
Definition: papi.c:6666
int PAPI_flips(float *rtime, float *ptime, long long *flpins, float *mflips)
Definition: papi_hl.c:204
int PAPI_epc(int event, float *rtime, float *ptime, long long *ref, long long *core, long long *evt, float *epc)
Definition: papi_hl.c:387
int PAPI_num_cmp_hwctrs(int cidx)
Definition: papi.c:3965
#define PAPI_2MAX_STR_LEN
Definition: papi.h:467
int PAPI_get_thr_specific(int tag, void **ptr)
Definition: papi.c:362
int PAPI_accum(int EventSet, long long *values)
Definition: papi.c:2745
PAPI_all_thr_spec_t
static struct counter_info * event_info
static int cidx
#define PAPI_MH_MAX_LEVELS
Definition: papi.h:746
int PAPI_library_init(int version)
Definition: papi.c:500
int PAPI_profil(void *buf, unsigned bufsiz, caddr_t offset, unsigned scale, int EventSet, int EventCode, int threshold, int flags)
Definition: papi.c:5438
long long debug
Definition: iozone.c:1374
#define PAPI_PMU_MAX
Definition: papi.h:470
int PAPI_stop_counters(long long *values, int array_len)
Definition: papi_hl.c:807
A pointer to the following is passed to PAPI_get_dmem_info()
Definition: papi.h:872
void PAPI_shutdown(void)
Definition: papi.c:4461
int PAPI_get_cmp_opt(int option, PAPI_option_t *ptr, int cidx)
Definition: papi.c:4335
const PAPI_exe_info_t * PAPI_get_executable_info(void)
Definition: papi.c:6114
int PAPI_num_events(int EventSet)
Definition: papi.c:4426
int PAPI_get_opt(int option, PAPI_option_t *ptr)
Definition: papi.c:4143
long long page_size
Definition: iozone.c:428
int PAPI_get_component_index(const char *name)
Definition: papi.c:6610
int PAPI_state(int EventSet, int *status)
Definition: papi.c:3053
int PAPI_query_named_event(const char *EventName)
Definition: papi.c:756
get the executable's address space info
Definition: papi.h:696
static int Event[MAX_EVENTS]
int PAPI_set_granularity(int granularity)
Definition: papi.c:5557
address range specification for range restricted counting if both are zero, range is disabled
Definition: papi.h:837
int PAPI_enum_cmp_event(int *EventCode, int modifier, int cidx)
Definition: papi.c:1357
mh for mem hierarchy maybe?
Definition: papi.h:774
void handler(int EventSet, void *address, long long overflow_vector, void *context)
Definition: rapl_overflow.c:20
int PAPI_cleanup_eventset(int EventSet)
Definition: papi.c:2890
int PAPI_assign_eventset_component(int EventSet, int cidx)
Definition: papi.c:1526
char version[]
Definition: fileop.c:134
int PAPI_create_eventset(int *EventSet)
Definition: papi.c:1464
int PAPI_event_code_to_name(int EventCode, char *out)
Definition: papi.c:915
static int threshold
int PAPI_num_hwctrs(void)
Definition: papi.c:3909
#define PAPI_MAX_INFO_TERMS
Definition: papi.h:903
int PAPI_get_dmem_info(PAPI_dmem_info_t *dest)
Definition: papi.c:6063
int PAPI_query_event(int EventCode)
Definition: papi.c:684
int PAPI_get_overflow_event_index(int Eventset, long long overflow_vector, int *array, int *number)
Definition: papi.c:6517
int(* PAPI_debug_handler_t)(int code)
Definition: papi.h:686
int PAPI_multiplex_init(void)
Definition: papi.c:2982
int PAPI_read_ts(int EventSet, long long *values, long long *cyc)
Definition: papi.c:2648
long long PAPI_get_real_usec(void)
Definition: papi.c:6264
int PAPI_unregister_thread(void)
Definition: papi.c:244
int PAPI_set_thr_specific(int tag, void *ptr)
Definition: papi.c:438
char * PAPI_strerror(int)
Definition: papi.c:4603
static char stack[2 *PAPI_HUGE_STR_LEN]
Definition: papi_preset.c:791
long long status
Definition: iozone.c:1335
int PAPI_unlock(int)
Definition: papi.c:6421
int PAPI_read_counters(long long *values, int array_len)
Definition: papi_hl.c:710
#define PAPI_MIN_STR_LEN
Definition: papi.h:465
long long PAPI_get_real_nsec(void)
Definition: papi.c:6237
int PAPI_num_counters(void)
Definition: papi_hl.c:541
int PAPI_start_counters(int *events, int array_len)
Definition: papi_hl.c:597
int data_type[MAX_EVENTS]
Definition: powercap_plot.c:16
int PAPI_set_multiplex(int EventSet)
Definition: papi.c:3333
unsigned long PAPI_thread_id_t
Definition: papi.h:558
int PAPI_destroy_eventset(int *EventSet)
Definition: papi.c:2014
int PAPI_remove_named_event(int EventSet, const char *EventName)
Definition: papi.c:1961
#define PAPI_MAX_STR_LEN
Definition: papi.h:466
int PAPI_set_domain(int domain)
Definition: papi.c:5688
char * caddr_t
int PAPI_attach(int EventSet, unsigned long tid)
Definition: papi.c:3201
static int attach(hwd_control_state_t *ctl, unsigned long tid)
Definition: perfctr.c:242
long long PAPI_get_real_cyc(void)
Definition: papi.c:6217
int PAPI_read(int EventSet, long long *values)
Definition: papi.c:2559
int PAPI_start(int EventSet)
Definition: papi.c:2096
void PAPI_perror(const char *msg)
Definition: papi.c:4653
int PAPI_get_multiplex(int EventSet)
Definition: papi.c:4028
const PAPI_hw_info_t * PAPI_get_hardware_info(void)
Definition: papi.c:6185
static long long values[NUM_EVENTS]
Definition: init_fini.c:10
int PAPI_lock(int)
Definition: papi.c:6401
static const PAPI_hw_info_t * hw_info
Definition: byte_profile.c:28
volatile int buf[CACHE_FLUSH_BUFFER_SIZE_INTS]
Definition: do_loops.c:12
int PAPI_list_threads(unsigned long *tids, int *number)
Definition: papi.c:286
int PAPI_get_event_component(int EventCode)
Definition: papi.c:6583
char * PAPI_user_defined_events_file_t
Definition: papi.h:720
int PAPI_set_debug(int level)
Definition: papi.c:3126
void(* PAPI_overflow_handler_t)(int EventSet, void *address, long long overflow_vector, void *context)
Definition: papi.h:567
static long count
#define PAPI_MAX_MEM_HIERARCHY_LEVELS
Definition: papi.h:747
int PAPI_list_events(int EventSet, int *Events, int *number)
Definition: papi.c:6001
int PAPI_get_eventset_component(int EventSet)
Definition: papi.c:1569