LAPI_Msgpoll Sous-routine
Objectif
Permet à l'unité d'exécution d'appeler de vérifier les progrès de la communication.
Bibliothèque
Bibliothèque de disponibilité (liblapi_r.a)
Syntaxe C
#include <lapi.h>
int LAPI_Msgpoll(hndl, cnt, info)
lapi_handle_t hndl;
uint cnt;
lapi_msg_info_t *info;
typedef struct {
lapi_msg_state_t status; /* Message status returned from LAPI_Msgpoll */
ulong reserve[10]; /* Reserved */
} lapi_msg_info_t;Syntaxe FORTRAN
include 'lapif.h'
LAPI_MSGPOLL(hndl, cnt, info, ierror)
INTEGER hndl
INTEGER cnt
TYPE (LAPI_MSG_STATE_T) :: info
INTEGER ierrorDescriptif
Moniteur de progression Type of call: local (blocage)
La sous-routine LAPI_Msgpoll permet à l'unité d'exécution appelante de vérifier la progression de la communication. Avec cette sous-routine, LAPI fournit un moyen d'exécuter le répartiteur plusieurs fois jusqu'à ce qu'une progression soit effectuée ou qu'un nombre maximal spécifié de boucles de répartiteur ait été exécuté. Ici, Progrès est défini comme l'achèvement d'une opération d'envoi de message ou d'une opération de réception de message.
LAPI_Msgpoll est destiné à être utilisé lorsque les interruptions sont désactivées. Si l'utilisateur n'a pas explicitement désactivé les interruptions, LAPI désactive temporairement le mode d'interruption alors qu'il se trouve dans cette sous-routine car le répartiteur est appelé, ce qui traitera les opérations de réception en attente. Si le répartiteur LAPI boucle pour le nombre maximal de fois spécifié, l'appel renvoie. Si la progression est effectuée avant le nombre maximal, l'appel est renvoyé immédiatement. Dans les deux cas, LAPI signalera le statut via une structure de données transmise par référence.
- LAPI_DISP_CNTR
- Si le répartiteur a une boucle Cnt en boucle sans faire de progrès
- LAPI_SEND_COMPLETE
- Si une opération d'envoi de message est terminée
- LAPI_RECV_COMPLETE
- Si une opération de réception de message est terminée
- LAPI_BOTH_COMPLETE
- Si une opération d'envoi de message et une opération de réception de message sont terminées
- LAPI_POLLING_NET
- Si une autre unité d'exécution est déjà en cours d'interrogation, le réseau ou la mémoire partagée est terminée
Paramètres
- ENTREE
- Hndl
- Indique le descripteur LAPI.
- Cnt
- Indique le nombre maximal de fois que le répartiteur doit effectuer une boucle sans progression avant de revenir.
- Informations
- Indique une structure de statut qui contient le résultat de l'appel LAPI_Msgpoll() .
- Sortie
- Ierror
- Indique un code retour FORTRAN. C'est toujours le dernier paramètre.
C Exemples
{
lapi_msg_info_t msg_info;
int cnt = 1000;
.
.
.
LAPI_Msgpoll(hndl, cnt, &msg_info);
if ( msg_info.status & LAPI_BOTH_COMPLETE ) {
/* both a message receive and a message send have been completed */
} else if ( msg_info.status & LAPI_RECV_COMPLETE ) {
/* just a message receive has been completed */
} else if ( msg_info.status & LAPI_SEND_COMPLETE ) {
/* just a message send has been completed */
} else {
/* cnt loops and no progress */
}
}Valeurs renvoyées
- LAPI_SUCCESS
- Indique que l'appel de fonction a abouti.
- LAPI_ERR_HNDL_INVALID
- Indique que le Hndl transmis n'est pas valide (non initialisé ou à l'état arrêté).
- LAPI_ERR_MSG_INFO_NULL
- Indique que le pointeur info est NULL (en C) ou que la valeur de info est LAPI_ADDR_NULL (en FORTRAN).
Emplacement
- /usr/lib/liblapi_r.a