---
name: "PAPI_set_cmp_domain"
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_cmp_domain"
---

# PAPI\_set\_cmp\_domain(3)

Set the default counting domain for new event sets bound to the specified component.

## NAME

PAPI\_set\_cmp\_domain - Set the default counting domain for new event sets bound to the specified component.

## SYNOPSIS

## Detailed Description

**C Prototype:**

\#include \<**papi.h**\> \
\
  int **PAPI\_set\_cmp\_domain( int domain, int  cidx )**;

**Parameters**

*domain* one of the following constants as defined in the **papi.h** header file

- •

  PAPI\_DOM\_USER User context counted

- •

  PAPI\_DOM\_KERNEL Kernel/OS context counted

- •

  PAPI\_DOM\_OTHER Exception/transient mode counted

- •

  PAPI\_DOM\_SUPERVISOR Supervisor/hypervisor context counted

- •

  PAPI\_DOM\_ALL All above contexts counted

- •

  PAPI\_DOM\_MIN The smallest available context

- •

  PAPI\_DOM\_MAX The largest available context

- •

  PAPI\_DOM\_HWSPEC Something other than CPU like stuff. Individual components can decode low order bits for more meaning

*cidx* An integer identifier for a component. By convention, component 0 is always the cpu component.

**Return values**

*PAPI\_OK* \
 *PAPI\_EINVAL* One or more of the arguments is invalid. \
 *PAPI\_ENOCMP* The argument cidx is not a valid component.

**PAPI\_set\_cmp\_domain** sets the default counting domain for all new event sets in all threads, and requires an explicit component argument. Event sets that are already in existence are not affected. To change the domain of an existing event set, please see **PAPI\_set\_opt**. The reader should note that the domain of an event set affects only the mode in which the counter continues to run. Counts are still aggregated for the current process, and not for any other processes in the system. Thus when requesting PAPI\_DOM\_KERNEL , the user is asking for events that occur on behalf of the process, inside the kernel.

**Example:**

```
int ret;
// Initialize the library
ret = PAPI_library_init(PAPI_VER_CURRENT);
if (ret > 0 && ret != PAPI_VER_CURRENT) {
  fprintf(stderr,"PAPI library version mismatch!\n");
  exit(1);
}
if (ret < 0) handle_error(ret);
// Set the default domain for the cpu component
ret = PAPI_set_cmp_domain(PAPI_DOM_KERNEL,0);
if (ret != PAPI_OK) handle_error(ret);
ret = PAPI_create_eventset(&EventSet);
if (ret != PAPI_OK) handle_error(ret);
```

**See also**

**PAPI\_set\_domain** **PAPI\_set\_granularity** **PAPI\_set\_opt** **PAPI\_get\_opt**

## Author

Generated automatically by Doxygen for PAPI from the source code.
