---
name: "PAPI_start"
section: "3"
platform: "linux"
package: "libpapi-dev"
version: "7.1.0-5+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/PAPI_start"
---

# PAPI\_start(3)

Start counting hardware events in an event set.

## NAME

PAPI\_start - Start counting hardware events in an event set.

## SYNOPSIS

## Detailed Description

**C Interface:**

\#include \<**papi.h**\> \
\
  int **PAPI\_start( int  EventSet )**;

**Parameters**

*EventSet* -- an integer handle for a PAPI event set as created by **PAPI\_create\_eventset**

**Return values**

*PAPI\_OK* \
 *PAPI\_EINVAL* -- One or more of the arguments is invalid. \
 *PAPI\_ESYS* -- A system or C library call failed inside PAPI, see the errno variable. \
 *PAPI\_ENOEVST* -- The EventSet specified does not exist. \
 *PAPI\_EISRUN* -- The EventSet is currently counting events. \
 *PAPI\_ECNFLCT* -- The underlying counter hardware can not count this event and other events in the EventSet simultaneously. \
 *PAPI\_ENOEVNT* -- The PAPI preset is not available on the underlying hardware.

**PAPI\_start** starts counting all of the hardware events contained in the previously defined EventSet. All counters are implicitly set to zero before counting. Assumes an initialized PAPI library and a properly added event set.

**Example:**

```
int EventSet = PAPI_NULL;
long long values[2];
int ret;
ret = PAPI_create_eventset(&EventSet);
if (ret != PAPI_OK) handle_error(ret);
// Add Total Instructions Executed to our EventSet
ret = PAPI_add_event(EventSet, PAPI_TOT_INS);
if (ret != PAPI_OK) handle_error(ret);
// Start counting
ret = PAPI_start(EventSet);
if (ret != PAPI_OK) handle_error(ret);
poorly_tuned_function();
ret = PAPI_stop(EventSet, values);
if (ret != PAPI_OK) handle_error(ret);
printf("%lld\\n",values[0]);
```

**See also**

**PAPI\_create\_eventset** **PAPI\_add\_event** **PAPI\_stop**

## Author

Generated automatically by Doxygen for PAPI from the source code.
