Sous-routine pm_set_ebb_handler
Objectif
Configure la fonction EBB (Event-Based Branching) pour l'unité d'exécution appelante.
Bibliothèque
Bibliothèque d'API Performance Monitor (libpmapi.a)
Syntaxe
#include <pmapi.h>
int pm_set_ebb_handler (void * handler_address, void * data_area,)
Descriptif
La sous-routine pm_set_ebb_handler configure EBB et permet à l'utilisateur de spécifier l'adresse effective (EA) de l'instruction suivante à exécuter en fonction de l'occurrence d'événements spécifiques. Les événements et les fréquences sont configurés par l'unité d'exécution avant d'appeler cette sous-routine.
Les événements peuvent être configurés à l'aide de la sous-routine pm_set_program_mythread, pm_set_program_pthreadou pm_set_program_thread . L'une de ces sous-routines doit être appelée avant d'appeler la sous-routine pm_set_ebb_handler . Les sous-routines pm_set_program_ * doivent être appelées avec l'indicateur no_inherit .
Les fréquences de compteur peuvent être configurées à l'aide de la sous-routine pm_set_counter_frequency_mythread, pm_set_counter_frequency_pthreadou pm_set_counter_frequency_thread .
- La sous-routine pm_set_ebb_handler ne peut être appelée que par l'unité d'exécution elle-même (unités d'exécution autoprofilage) et ne peut pas être appelée si l'unité d'exécution fait partie d'un groupe.
- La sous-routine pm_set_ebb_handler ne peut être appelée que lorsque le mode d'unité d'exécution est 1: 1 et que le comptage de l'unité d'exécution n'est pas démarré.
Paramètres
| Article | Descriptif |
|---|---|
| adresse_gestionnaire | Adresse effective du gestionnaire d'utilisateurs. |
| zone de données | Zone de données allouée. Cette zone de données est accessible à partir du gestionnaire EBB. |
Valeurs renvoyées
En cas d'échec, une valeur différente de zéro est renvoyée et un code d'erreur positif est défini. Si l'opération aboutit, la valeur zéro est renvoyée.
Codes d'erreur
La sous-routine échoue si les codes d'erreur suivants sont renvoyés:
| Article | Descriptif |
|---|---|
| Pmapi_NoInit | La sous-routine pm_initialize n'est pas appelée. |
| Pmapi_Unsupported_EBBThreadMode | L'unité d'exécution ne s'exécute pas en mode 1: 1. |
| Pmapi_NoSetProg | La sous-routine pm_set_program n'est pas appelée. |
| Pmapi_Invalid_EBB_handler_addr | La valeur de handler_address est NULL. |
| Pmapi_Invalid_EBB_data_addr | La valeur de data_area est NULL. |
| Pmapi_Malloc_Err | La sous-routine malloc échoue lors de l'allocation de mémoire à la structure pthread_EBB_registration_t . |
| Pmapi_Invalid_EBB_Config | L'indicateur PTHREAD_EBB_PMU_TYPE n'est pas transmis à la sous-routine pthread . |
| Pmapi_EBB_Already_Exists | Le gestionnaire EBB est déjà configuré pour l'unité d'exécution. |
| Autres codes d'erreur différents de zéro | Renvoyé par l'appel à la sous-routine pmsvcs . |
Fichiers
Le fichier pmapi.h définit les macros standard, les types de données et les sous-routines.