Objectif
Renvoie les informations d'erreur provenant du sous-programme Charge ou Exec ; fournit également une liste des fichiers objet chargés pour le processus en cours.
Descriptif
Le sous-programme Loadquery obtient des informations détaillées sur une erreur signalée dans la dernière sous-routine Charge ou Exec exécutée par un processus appelant. Le sous-programme Loadquery peut également être utilisé pour obtenir une liste de noms de fichier objet pour tous les fichiers d'objets qui ont été chargés pour le processus en cours ou du chemin de bibliothèque utilisé lors de l'exécution du processus.
Paramètres
| Article |
Descriptif |
| Tampon |
Pointe vers un Mémoire tampon dans lequel stocker les informations. |
| BufferLength |
Indique le nombre d'octets disponibles dans le paramètre Mémoire tampon . |
| Flags |
Indique l'action de la sous-routine Loadquery comme suit:
- L_GÉTINFO
- Renvoie une liste de tous les fichiers objet chargés pour le processus en cours et stocke la liste dans le paramètre Mémoire tampon . Les informations du fichier objet sont contenues dans une séquence de structures LD_INFO , comme défini dans le fichier sys/ldr.h . Chaque structure contient l'emplacement du module dans la mémoire virtuelle et le chemin d'accès utilisé pour le charger dans la mémoire. La zone de descripteur de fichier de la structure LD_INFO n'est pas remplie par cette fonction.
- L_GETMESSAGE
- Renvoie des informations d'erreur détaillées décrivant l'échec d'une fonction Charge ou Exec précédemment appelée, et stocke les informations sur les messages d'erreur dans Mémoire tampon. Une fois le retour réussi de cette fonction, le début de Mémoire tampon contient un tableau de pointeurs de caractères. Chaque pointeur de caractère pointe vers une chaîne dans la mémoire tampon contenant un message d'erreur du chargeur. Le tableau de caractères se termine par un pointeur de caractère nul. Chaque chaîne de message d'erreur est constituée d'un numéro de message ASCII suivi de zéro ou plus de données de message spécifiques aux erreurs. Les numéros de message valides sont répertoriés dans le fichier sys/ldr.h .
Vous pouvez formater les messages d'erreur renvoyés par la fonction L_GETMESSAGE et les écrire dans l'erreur standard à l'aide de la commande système standard /usr/sbin/execerror comme suit:
char *buffer[1024];
buffer[0] = "execerror";
buffer[1] = "name of program that failed to load";
loadquery(L_GETMESSAGES, &buffer[2],\
sizeof buffer-2*sizeof(char*));
execvp("/usr/sbin/execerror",buffer);
Cet exemple de code entraîne l'arrêt de l'application une fois que les messages sont écrits dans une erreur standard.
- L_GETLIBPATH
- Renvoie le chemin de bibliothèque utilisé lors de l'exécution du processus. Le chemin d'accès à la bibliothèque est une chaîne de caractères terminée par une valeur null.
- L_GETXINFO
- Renvoie une liste de tous les fichiers objet chargés pour le processus en cours et stocke la liste dans le paramètre Mémoire tampon . Les informations du fichier objet sont contenues dans une séquence de structures LD_XINFO , comme défini dans le fichier sys/ldr.h . Chaque structure contient l'emplacement du module dans la mémoire virtuelle et le chemin d'accès utilisé pour le charger dans la mémoire. La zone de descripteur de fichier de la structure LD_XINFO n'est pas remplie par cette fonction.
|
Valeurs renvoyées
Une fois l'opération terminée, loadquery renvoie les informations demandées dans la mémoire tampon de l'appelant spécifiée par les paramètres Buffer et BufferLength .
Codes d'erreur
La sous-routine loadquery renvoie un code de retour de -1 et la variable globale errno reçoit l'une des valeurs suivantes lorsqu'une condition d'erreur est détectée :
| Article |
Descriptif |
| ENOMEM |
Indique que la mémoire tampon de l'appelant spécifiée par les paramètres Buffer et BufferLength est trop petite pour renvoyer les informations demandées. Lorsque cela se produit, les informations de la mémoire tampon ne sont pas définies. |
| EINVAL |
Indique que la fonction spécifiée dans le paramètre Indicateurs n'est pas valide. |
| EDÉFAUT |
Indique que l'adresse indiquée dans le paramètre Mémoire tampon n'est pas valide. |