PAPI_set_cmp_domain(3)
πΈ PAPI_set_cmp_domain(3) πΈ
okay bestie, welcome to the PAPI manual page for PAPI_set_cmp_domain(3) β the manual is literally named PAPI, and this page is all about setting the default counting domain for new event sets bound to a specific component. Let's get into it, no cap. π
π 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 thepapi.hheader 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, component0is always the cpu component. π₯οΈ
π«Ά Return values π«Ά
PAPI_OKPAPI_EINVALβ one or more of the arguments is invalid.PAPI_ENOCMPβ the argumentcidxis not a valid component.
okay so here's the tea: PAPI_set_cmp_domain sets the default counting domain for all new event sets in all threads, and it requires an explicit component argument. Event sets that are already in existence are not affected β they're living their truth unchanged. 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. So 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. π€
and that's the whole vibe, bestie. The footer info says Version 7.2.0.0, dated Wed Jun 25 2025 19:30:49 β that's the source/version and date, slay. It was generated automatically by Doxygen for PAPI from the source code. mwah πβ¨
π¦ where this page comes from
- nixos 26.05: papi 7.2.0
- nixpkgs unstable: papi 7.2.0
- opensuse-leap 16.0: papi-devel 7.2.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: papi-devel 7.2.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: papi-devel 7.2.0-160000.2.2 Β· BSD-3-Clause
- ubuntu resolute: libpapi-dev 7.2.0-2 Β· BSD-3-Clause
- ubuntu stonking: libpapi-dev 7.2.0-2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms