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 파일은 표준 매크로, 데이터 유형 및 서브루틴을 정의합니다.