pm_set_ebb_handler 서브루틴

용도

호출 스레드에 대한 이벤트 기반 분기 (EBB) 기능을 구성합니다.

라이브러리

성능 모니터 API 라이브러리 (libpmapi.a)

구문

#include <pmapi.h>
int pm_set_ebb_handler (void * handler_address, void * data_area,)

설명

pm_set_ebb_handler 서브루틴은 EBB를 구성하고 사용자가 특정 이벤트의 발생을 기반으로 실행될 다음 명령어의 유효 주소 (EA) 를 지정할 수 있도록 합니다. 이벤트 및 빈도는 이 서브루틴을 호출하기 전에 스레드에 의해 구성됩니다.

pm_set_program_mythread, pm_set_program_pthread또는 pm_set_program_thread 서브루틴을 사용하여 이벤트를 구성할 수 있습니다. pm_set_ebb_handler 서브루틴을 호출하기 전에 이러한 서브루틴 중 하나를 호출해야 합니다. pm_set_program_ * 서브루틴은 no_inherit 플래그와 함께 호출되어야 합니다.

카운터 빈도는 pm_set_counter_frequency_mythread또는 pm_set_counter_frequency_pthread또는 pm_set_counter_frequency_thread 서브루틴을 사용하여 구성할 수 있습니다.

참고:
  • pm_set_ebb_handler 서브루틴은 자체 프로파일링 중인 스레드 (자체 프로파일링 스레드) 에 의해서만 호출될 수 있으며 스레드가 그룹의 일부인 경우에는 호출될 수 없습니다.
  • pm_set_ebb_handler 서브루틴은 스레드 모드가 1: 1이고 스레드에 대한 계수가 시작되지 않은 경우에만 호출할 수 있습니다.

매개변수

항목 설명
핸들러_주소 사용자 핸들러의 유효 주소입니다.
데이터 영역 할당된 데이터 영역입니다. 이 데이터 영역은 EBB 핸들러에서 액세스할 수 있습니다.

리턴 값

실패하면 0이외의 값이 리턴되고 양수 오류 코드가 설정됩니다. 성공하면 0값이 리턴됩니다.

오류 코드

다음 오류 코드가 리턴되면 서브루틴이 실패합니다.

항목 설명
Pmapi_NoInit pm_initialize 서브루틴은 호출되지 않습니다.
Pmapi_Unsupported_EBBThreadMode 스레드가 1: 1모드에서 실행되고 있지 않습니다.
Pmapi_NoSetProg pm_set_program 서브루틴이 호출되지 않습니다.
PMapi_Invalid_EBB_handler_addr handler_address 의 값이 NULL입니다.
Pmapi_Invalid_EBB_data_addr data_area 의 값이 널입니다.
Pmapi_Malloc_Err pthread_EBB_registration_t 구조에 메모리를 할당하는 동안 malloc 서브루틴이 실패합니다.
Pmapi_Invalid_EBB_Config PTHREAD_EBB_PMU_TYPE 플래그는 pthread 서브루틴으로 전달되지 않습니다.
PMapi_EBB_Already_Exists 스레드에 대해 EBB 핸들러가 이미 설정되어 있습니다.
기타 0이 아닌 오류 코드 pmsvcs 서브루틴에 대한 호출에 의해 리턴됩니다.

파일

pmapi.h 파일은 표준 매크로, 데이터 유형 및 서브루틴을 정의합니다.