---
name: "PAPI_set_opt"
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_set_opt"
---

# PAPI\_set\_opt(3)

Set PAPI library or event set options.

## NAME

PAPI\_set\_opt - Set PAPI library or event set options.

## SYNOPSIS

## Detailed Description

**C Interface:**

\#include \<**papi.h**\> \
\
  int **PAPI\_set\_opt(  int option, PAPI\_option\_t \* ptr )**;

**Parameters**

*option* Defines the option to be set. Possible values are briefly described in the table below.\
 *ptr* Pointer to a structure determined by the selected option. See **PAPI\_option\_t** for a description of possible structures.

**Return values**

*PAPI\_OK* \
 *PAPI\_EINVAL* The specified option or parameter is invalid. \
 *PAPI\_ENOEVST* The EventSet specified does not exist. \
 *PAPI\_EISRUN* The EventSet is currently counting events. \
 *PAPI\_ECMP* The option is not implemented for the current component. \
 *PAPI\_ENOINIT* PAPI has not been initialized. \
 *PAPI\_EINVAL\_DOM* Invalid domain has been requested.

**PAPI\_set\_opt()** changes the options of the PAPI library or a specific EventSet created by **PAPI\_create\_eventset**. Some options may require that the EventSet be bound to a component before they can execute successfully. This can be done either by adding an event or by explicitly calling **PAPI\_assign\_eventset\_component**.

Ptr is a pointer to the **PAPI\_option\_t** structure, which is actually a union of different structures for different options. Not all options require or return information in these structures. Each requires different values to be set. Some options require a component index to be provided. These options are handled implicitly through the option structures.

**Note**

Some options, such as PAPI\_DOMAIN and PAPI\_MULTIPLEX are also available as separate entry points in both C and Fortran.

The reader is encouraged to peruse the ctests code in the PAPI distribution for examples of usage of **PAPI\_set\_opt**.

**Possible values for the PAPI\_set\_opt option parameter**

OPTION          DEFINITION PAPI\_DEFDOM     Set default counting domain for newly created event sets. Requires a \
                 component index. PAPI\_DEFGRN     Set default counting granularity. Requires a component index. PAPI\_DEBUG      Set the PAPI debug state and the debug handler. The debug state is \
                 specified in ptr-\>debug.level. The debug handler is specified in \
                 ptr-\>debug.handler. For further information regarding debug states and\
                 the behavior of the handler, see PAPI\_set\_debug. PAPI\_MULTIPLEX  Enable specified EventSet for multiplexing. PAPI\_DEF\_ITIMER Set the type of itimer used in software multiplexing, overflowing \
                 and profiling. PAPI\_DEF\_MPX\_NS Set the sampling time slice in nanoseconds for multiplexing and overflow. PAPI\_DEF\_ITIMER\_NS See PAPI\_DEF\_MPX\_NS. PAPI\_ATTACH     Attach EventSet specified in ptr-\>attach.eventset to thread or process id\
                 specified in in ptr-\>attach.tid. PAPI\_CPU\_ATTACH Attach EventSet specified in ptr-\>cpu.eventset to cpu specified in in\
                 ptr-\>cpu.cpu\_num. PAPI\_DETACH     Detach EventSet specified in ptr-\>attach.eventset from any thread\
                 or process id. PAPI\_DOMAIN     Set domain for EventSet specified in ptr-\>domain.eventset. \
                 Will error if eventset is not bound to a component. PAPI\_GRANUL     Set granularity for EventSet specified in ptr-\>granularity.eventset. \
                 Will error if eventset is not bound to a component. PAPI\_INHERIT        Enable or disable inheritance for specified EventSet. PAPI\_DATA\_ADDRESS   Set data address range to restrict event counting for EventSet specified\
                 in ptr-\>addr.eventset. Starting and ending addresses are specified in\
                 ptr-\>addr.start and ptr-\>addr.end, respectively. If exact addresses\
                 cannot be instantiated, offsets are returned in ptr-\>addr.start\_off and\
                 ptr-\>addr.end\_off. Currently implemented on Itanium only. PAPI\_INSTR\_ADDRESS  Set instruction address range as described above. Itanium only.

**See also**

**PAPI\_set\_debug**

**PAPI\_set\_multiplex**

**PAPI\_set\_domain**

**PAPI\_option\_t**

## Author

Generated automatically by Doxygen for PAPI from the source code.
