PAPI  5.3.0.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
PAPI_state.c
Go to the documentation of this file.
1 /*****************************************************************************
2  * We use PAPI_state to get the counting state of an EventSet.This function *
3  * returns the state of the entire EventSet. *
4  *****************************************************************************/
5 
6 
7 
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include "papi.h" /* This needs to be included every time you use PAPI */
11 
12 #define ERROR_RETURN(retval) { fprintf(stderr, "Error %d %s:line %d: \n", retval,__FILE__,__LINE__); exit(retval); }
13 
14 
15 int main()
16 {
17 
18  int retval;
19  int status = 0;
20  int EventSet = PAPI_NULL;
21 
22  /****************************************************************************
23  * This part initializes the library and compares the version number of the *
24  * header file, to the version of the library, if these don't match then it *
25  * is likely that PAPI won't work correctly.If there is an error, retval *
26  * keeps track of the version number. *
27  ****************************************************************************/
28 
30  {
31  printf("Library initialization error! \n");
32  exit(-1);
33  }
34 
35  /*Creating the Eventset */
36  if((retval = PAPI_create_eventset(&EventSet)) != PAPI_OK)
37  ERROR_RETURN(retval);
38 
39  /* Add Total Instructions Executed to our EventSet */
40  if ((retval=PAPI_add_event(EventSet, PAPI_TOT_INS)) != PAPI_OK)
41  ERROR_RETURN(retval);
42 
43  if ((retval=PAPI_state(EventSet, &status)) != PAPI_OK)
44  ERROR_RETURN(retval);
45 
46  printstate(status);
47 
48  /* Start counting */
49  if ((retval=PAPI_start(EventSet)) != PAPI_OK)
50  ERROR_RETURN(retval);
51 
52  if (PAPI_state(EventSet, &status) != PAPI_OK)
53  ERROR_RETURN(retval);
54 
55  printstate(status);
56 
57  /* free the resources used by PAPI */
58  PAPI_shutdown();
59 
60  exit(0);
61 }
62 
64 {
65  if(status & PAPI_STOPPED)
66  printf("Eventset is currently stopped or inactive \n");
67  if(status & PAPI_RUNNING)
68  printf("Eventset is currently running \n");
69  if(status & PAPI_PAUSED)
70  printf("Eventset is currently Paused \n");
71  if(status & PAPI_NOT_INIT)
72  printf(" Eventset defined but not initialized \n");
73  if(status & PAPI_OVERFLOWING)
74  printf(" Eventset has overflowing enabled \n");
75  if(status & PAPI_PROFILING)
76  printf(" Eventset has profiling enabled \n");
77  if(status & PAPI_MULTIPLEXING)
78  printf(" Eventset has multiplexing enabled \n");
79  return 0;
80 }
#define PAPI_NOT_INIT
Definition: fpapi.h:32
int PAPI_add_event(int EventSet, int EventCode)
Definition: papi.c:1597
#define PAPI_NULL
Definition: fpapi.h:13
#define PAPI_TOT_INS
Definition: fpapi.h:185
#define PAPI_PAUSED
Definition: fpapi.h:31
return PAPI_OK
Definition: linux-nvml.c:458
#define PAPI_RUNNING
Definition: fpapi.h:30
int printstate(int status)
Definition: PAPI_state.c:63
#define PAPI_STOPPED
Definition: fpapi.h:29
#define printf
Definition: papi_test.h:125
#define PAPI_OVERFLOWING
Definition: fpapi.h:33
#define PAPI_PROFILING
Definition: fpapi.h:34
Return codes and api definitions.
#define PAPI_MULTIPLEXING
Definition: fpapi.h:35
int PAPI_library_init(int version)
Definition: papi.c:495
void PAPI_shutdown(void)
Definition: papi.c:4344
int PAPI_state(int EventSet, int *status)
Definition: papi.c:2956
#define PAPI_VER_CURRENT
Definition: fpapi.h:14
int PAPI_create_eventset(int *EventSet)
Definition: papi.c:1399
int EventSet
long long status
Definition: iozone.c:1335
#define ERROR_RETURN(retval)
Definition: PAPI_state.c:12
int PAPI_start(int EventSet)
Definition: papi.c:2019
ssize_t retval
Definition: libasync.c:338
int main(int argc, char **argv)
List all appio events codes and names.
void exit()