PAPI_add_events(3)

πŸ’… PAPI_add_events(3) β€” the PAPI manual, bestie edition πŸ’…

okay so welcome to the PAPI_add_events(3) page from the PAPI manual. This is the one where you add multiple PAPI presets or native hardware events to an event set. It’s giving β€œbatch mode but make it cute” ✨.


🌸 NAME 🌸

PAPI_add_events β€” add multiple PAPI presets or native hardware events to an event set. periodt πŸ’–.

✨ SYNOPSIS ✨

πŸ“ Detailed Description πŸ“

πŸŽ€ C Interface πŸŽ€

#include <papi.h>
int PAPI_add_events( int  EventSet, int * EventCodes, int  number );

Lowkey the whole lore: PAPI_add_event adds one event to a PAPI Event Set. PAPI_add_events does the same, but for an array of events. It’s the group-chat version vs. the solo text, iykyk 🫢.

A hardware event can be either a PAPI preset or a native hardware event code. For a list of PAPI preset events, see PAPI_presets or run the avail test case in the PAPI distribution. PAPI presets can be passed to PAPI_query_event to see if they exist on the underlying architecture. For a list of native events available on current platform, run native_avail test case in the PAPI distribution. For the encoding of native events, see PAPI_event_name_to_code to learn how to generate native code for the supported native event on the underlying architecture. No cap, that’s the whole map πŸ—ΊοΈ.

πŸ’– Parameters πŸ’–

  • EventSet β€” An integer handle for a PAPI Event Set as created by PAPI_create_eventset.
  • *EventCode β€” An array of defined events.
  • number β€” An integer indicating the number of events in the array *EventCode. It should be noted that PAPI_add_events can partially succeed, exactly like PAPI_remove_events. bestie, partial success is real, so check that return value πŸ‘€.

πŸ”₯ Return values πŸ”₯

  • Positive-Integer β€” The number of consecutive elements that succeeded before the error. Slay for the ones that made it, but the number matters.
  • PAPI_EINVAL β€” One or more of the arguments is invalid.
  • PAPI_ENOMEM β€” Insufficient memory to complete the operation.
  • PAPI_ENOEVST β€” The event set specified does not exist.
  • PAPI_EISRUN β€” The event set is currently counting events.
  • PAPI_ECNFLCT β€” The underlying counter hardware can not count this event and other events in the event set simultaneously.
  • PAPI_ENOEVNT β€” The PAPI preset is not available on the underlying hardware.
  • PAPI_EBUG β€” Internal error, please send mail to the developers. yeah, that’s a β€œhey devs” moment 😭.

πŸ¦‹ Examples πŸ¦‹

int EventSet = PAPI_NULL;
unsigned int native = 0x0;
if ( PAPI_create_eventset( &EventSet ) != PAPI_OK )
handle_error( 1 );
// Add Total Instructions Executed to our EventSet
if ( PAPI_add_event( EventSet, PAPI_TOT_INS ) != PAPI_OK )
handle_error( 1 );
// Add native event PM_CYC to EventSet
if ( PAPI_event_name_to_code( "PM_CYC", &native ) != PAPI_OK )
handle_error( 1 );
if ( PAPI_add_event( EventSet, native ) != PAPI_OK )
handle_error( 1 );

🌈 See also 🌈

  • PAPI_cleanup_eventset
  • PAPI_destroy_eventset
  • PAPI_event_code_to_name
  • PAPI_remove_events
  • PAPI_query_event
  • PAPI_presets
  • PAPI_native
  • PAPI_remove_event

πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for PAPI from the source code. iconic automation behavior πŸ’….


Version 7.2.0.0, dated Wed Jun 25 2025 19:30:48 β€” mwah, catch u in PAPI_add_events(3) πŸ«ΆπŸ’–