pthdb_pthread_context ou pthdb_pthread_setcontext Sous-routine

Objectif

Permet d'accéder au contexte pthread via la structure struct context64 .

Bibliothèque

bibliothèque de débogage pthread (libpthdebug.a)

Syntaxe

#include <sys/pthdebug.h>

int pthdb_pthread_context (pthdb_session_t   session,
                           pthdb_pthread_t   pthread,
                           pthdb_context_t * context)

int pthdb_pthread_setcontext (pthdb_session_t   session,
                              pthdb_pthread_t   pthread,
                              pthdb_context_t * context)

Descriptif

La bibliothèque de débogage pthread permet d'accéder au contexte pthread via la structure struct context64 , que le processus soit 32 bits ou 64 bits. Le débogueur doit être capable de convertir de 32 bits en 64 bits et de 64 bits pour les processus 32 bits. La mesure dans laquelle cette structure est remplie dépend de la présence des indicateurs de session PTHDB_FLAG_GPRS, PTHDB_FLAG_SPRSl et PTHDB_FLAG_FPRS . Il est nécessaire d'utiliser la bibliothèque de débogage pthread pour accéder au contexte d'une pthread sans unité d'exécution du noyau. La bibliothèque de débogage pthread peut également être utilisée pour accéder au contexte d'une pthread avec une unité d'exécution de noyau, mais cela se traduit par un rappel au débogueur, ce qui signifie que le débogueur est capable d'obtenir ces informations par lui-même. Le débogueur détermine si l'unité d'exécution du noyau s'exécute en mode utilisateur ou en mode noyau, puis remplit correctement le struct context64 . La bibliothèque de débogage pthread n'utilise pas elle-même ces informations et n'est donc pas sensible à l'implémentation correcte des fonctions de rappel read_regs et write_regs .

pthdb_pthread_context indique le contexte de pthread en fonction des paramètres des indicateurs de session. Utilise le rappel read_regs si pthread possède une unité d'exécution de noyau. Si read_regs n'est pas défini, il renvoie PTHDB_NOTSUP.

pthdb_pthread_setcontext définit le contexte de pthread en fonction des paramètres des indicateurs de session. Utilise le rappel write_data si pthread ne possède pas d'unité d'exécution de noyau. Utilisez le rappel write_regs si l'unité d'exécution pthread possède une unité d'exécution de noyau.

Si le débogueur ne définit pas les rappels read_regs et write_regs et si pthread ne possède pas d'unité d'exécution de noyau, les fonctions pthdb_pthread_context et pthdb_pthread_setcontext aboutissent. Mais si un pthread n'a pas d'unité d'exécution du noyau, ces fonctions échouent et renvoient PTHDB_CONTEXT.

Paramètres

Article Descriptif
session Descripteur de session.
pthread Descripteur pthread.
contexte Pointeur de mémoire tampon de contexte.

Valeurs renvoyées

En cas de réussite, ces fonctions renvoient PTHDB_SUCCESS. Sinon, un code d'erreur est renvoyé.

Codes d'erreur

Article Descriptif
PTHDB_BAD_SESSION Descripteur de session non valide.
PTHDB_BAD_PTHREAD Descripteur pthread non valide.
PTHDB_BAD_POINTER Pointeur de mémoire tampon non valide.
PTHDB_CALLBACK La fonction de rappel a échoué.
CONTEXT pour PTHDB_CONTEXT Impossible de déterminer le contexte pthread.
MEMOIRE-PTHBD Mémoire insuffisante
PTHDB_NOTSUP pthdb_pthread_ (set) context renvoie PTHDB_NOTSUP si les appels read_regs, write_data ou write_regs sont définis sur NULL.
PTHDB_INTERNAL Erreur dans la bibliothèque.