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 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.

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 πŸ’–βœ¨