Sous-routine pthread_getthrds_np
Objectif
Extrait les informations de registre et de pile pour les unités d'exécution.
Bibliothèque
Bibliothèque d'unités d'exécution (libpthreads.a)
Syntaxe
#include <pthread.h>
int pthread_getthrds_np (thread, mode, buf, bufsize, regbuf, regbufsize)
pthread_t *ptid;
int mode;
struct __pthrdsinfo *buf;
int bufsize;
void *regbuf;
int *regbufsize;Descriptif
La sous-routine pthread_getthrds_np extrait des informations sur l'état de l'unité d'exécution thread et de son unité d'exécution de noyau sous-jacente, y compris des informations d'enregistrement et de pile. L'unité d'exécution thread doit être à l'état suspendu pour fournir des informations d'enregistrement pour les unités d'exécution.
Paramètres
| Article | Descriptif |
|---|---|
| unité d"exécution | Pointeur vers l'unité d'exécution. En entrée, il identifie l'unité d'exécution cible de l'opération, ou 0 pour opérer sur la première entrée de la liste des unités d'exécution. En sortie, il identifie l'entrée suivante de la liste des unités d'exécution, ou 0 si la fin de la liste a été atteinte. pthread_getthrds_np peut être utilisé pour parcourir l'ensemble de la liste des unités d'exécution en commençant par thread pointant vers 0 et en appelant pthread_getthrds_np de manière répétée jusqu'à ce qu'il renvoie thread pointant vers 0. |
| mode | Indique le type de requête. Ces valeurs peuvent être regroupées par bit ou ensemble pour spécifier plusieurs types de requête.
|
| buf | Indique l'adresse de la structure __pthrdsinfo qui sera renseignée par pthread_getthrds_np. Au retour, cette structure contient les données suivantes (selon le type de requête demandé):
Si le mode
|
| taillebuf | Taille de la structure __pthrdsinfo ou __pthrdsinfox en octets. |
| regbuf | Emplacement de la mémoire tampon pour stocker les données de sauvegarde du registre et pour transmettre les informations TLS à partir du noyau si l'unité d'exécution est dans un appel système. |
| tailleregbuf | Pointeur vers la taille de la mémoire tampon regbuf . En entrée, il identifie la taille maximale de la mémoire tampon en octets. Dans la sortie, il identifie le nombre d'octets de données de sauvegarde de registre et transmet les informations TLS. Si l'unité d'exécution n'est pas dans un appel système, aucune donnée de sauvegarde de registre n'est renvoyée par le noyau et regbufsize a la valeur 0. Si la taille des données de sauvegarde du registre est supérieure à la valeur d'entrée de regbufsize, le nombre d'octets spécifié par la valeur d'entrée de regbufsize est copié dans regbuf, pthread_getthrds_np() renvoie ERANGE et la valeur de sortie de regbufsize indique le nombre d'octets requis pour contenir toutes les données de sauvegarde du registre. |
Valeurs renvoyées
En cas de réussite, la fonction pthread_getthrds_np renvoie zéro. Sinon, un numéro d'erreur est renvoyé pour indiquer l'erreur.
Codes d'erreur
La fonction pthread_getthrds_np échoue si:
| Article | Descriptif |
|---|---|
EINVAL |
thread ou buf est NULL ou bufsize n'est pas égal à la taille de la structure __pthrdsinfo dans la bibliothèque. |
ESRCH |
Aucune unité d'exécution correspondant à celle spécifiée par l'ID d'unité d'exécution unité d'exécutionn'a été trouvée. |
ERANGE |
regbuf n'était pas assez grand pour traiter toutes les données de sauvegarde du registre. |
ENOMEM |
La mémoire est insuffisante pour effectuer cette opération. |