Scroll to navigation

PAPI_add_event(3) PAPI PAPI_add_event(3)

NAME


PAPI_add_event - add PAPI preset or native hardware event to an event set
PAPI_add_events - add PAPI presets or native hardware events to an event set

SYNOPSIS

C Interface

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

Fortran Interface

#include fpapi.h
PAPIF_add_event(C_INT EventSet, C_INT EventCode, C_INT check)
PAPIF_add_events(C_INT EventSet, C_INT(*) EventCodes, C_INT number, C_INT check)

DESCRIPTION

PAPI_add_event()  adds one event to a PAPI Event Set.
PAPI_add_events() does the same, but for an array of events.

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(3) or run the avail test case in the PAPI distribution. PAPI presets can be passed to PAPI_query_event(3) 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(3) to learn how to generate native code for the supported native event on the underlying architecture.

ARGUMENTS

EventSet -- an integer handle for a PAPI Event Set as created by PAPI_create_eventset(3)

EventCode -- a defined event such as PAPI_TOT_INS.

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

RETURN VALUES

On success, these functions return PAPI_OK.
On error, a less than zero error code is returned or the the number of elements that succeeded before the error.

ERRORS

The number of consecutive elements that succeeded before the error.
One or more of the arguments is invalid.
Insufficient memory to complete the operation.
The event set specified does not exist.
The event set is currently counting events.
The underlying counter hardware can not count this event and other events in the event set simultaneously.
The PAPI preset is not available on the underlying hardware.
Internal error, please send mail to the developers.

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);

BUGS

The vector function should take a pointer to a length argument so a proper return value can be set upon partial success.

SEE ALSO

PAPI_presets(3), PAPI_native(3), PAPI_remove_event(3), PAPI_remove_events(3), PAPI_query_event(3), PAPI_cleanup_eventset(3), PAPI_destroy_eventset(3), PAPI_event_code_to_name(3)

September, 2004 PAPI Programmer's Reference