Subrotina LAPI_Msgpoll
Propósito
Permite o encadeamento de chamada para verificar o progresso da comunicação.
Biblioteca
Biblioteca de Disponibilidade (liblapi_r.a)
Sintaxe 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;Sintaxe FORTRAN
include 'lapif.h'
LAPI_MSGPOLL(hndl, cnt, info, ierror)
INTEGER hndl
INTEGER cnt
TYPE (LAPI_MSG_STATE_T) :: info
INTEGER ierrorDescrição
Type of call: monitor de progresso local (bloqueio)
A subroutine LAPI_Msgpoll permite que o encadeamento de chamada verifique o progresso da comunicação. Com este subroutine, LAPI fornece um meio de executar o despachante várias vezes até que o progresso seja feito ou um número máximo especificado de loops de despachantes tenha executado. Aqui, progresso é definido como a conclusão de uma operação de envio de mensagens ou de uma operação de recebimento de mensagens.
LAPI_Msgpoll destina-se a ser usado quando interruptos são desligados. Se o usuário não tiver desligado explicitamente interrompido, LAPI desativa temporariamente o modo de interrupção enquanto nessa subroutine porque o despachante é chamado, o que processará quaisquer operações de recebimento pendentes. Se o despachante LAPI lota para o número máximo especificado de vezes, a chamada retorna. Se o progresso for feito antes da contagem máxima, a chamada retornará imediatamente. Em qualquer dos dois casos, LAPI reportará status através de uma estrutura de dados que é passada por referência.
- LAPI_DISP_CNTR
- Se o despachante tiver loopado cnt vezes sem fazer progresso
- LAPI_SEND_COMPLETO
- Se uma operação enviar mensagem foi concluída
- LAPI_RECV_COMPLETO
- Se uma operação receber operação foi concluída
- LAPI_BOTH_COMPLETO
- Se ambos uma operação enviar operação e uma operação receber operação completaram
- LAPI_POLLING_NET
- Se outro encadeamento já está pesquisando a rede ou a conclusão de memória compartilhada
Parâmetros
- INPUT
- hndl
- Especifica a alça LAPI.
- cnt
- Especifica o número máximo de vezes que o despachante deve loop sem nenhum progresso antes de retornar.
- informações
- Especifica uma estrutura de status que contém o resultado da chamada LAPI_Msgpoll() .
- SAÍDA
- ierror
- Especifica um código de retorno FORTRAN. Este é sempre o último parâmetro.
Exemplos de C
{
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 */
}
}Valores De Retorno
- LAPI_SUCESSO
- Indica que a chamada de função foi concluída com sucesso.
- LAPI_ERR_HNDL_INVÁLIDA
- Indica que o hndl passado em não é válido (não inicializado ou em estado finalizado).
- LAPI_ERR_MSG_INFO_NULL
- Indica que o ponteiro info é NULL (em C) ou que o valor de info é LAPI_ADDR_NULL (em FORTRAN).
Local
- /usr/lib/liblapi_r.a