Voltar à lista
Linux x86_64E/S assíncrona & eventos#7

poll

Aguarda até que um ou mais descritores de arquivo de um conjunto fiquem prontos para E/S.

Descrição

Generalização mais moderna e sem o limite de 1024 descritores de `select`: cada descritor é associado a uma máscara de eventos de interesse (POLLIN, POLLOUT, etc.) em uma struct própria, em vez de bitmaps de tamanho fixo.

Header: poll.hman 2

Assinatura

int poll(struct pollfd * fds, nfds_t nfds, int timeout);

Parâmetros

ParâmetroTipoDescrição
fdsstruct pollfd *Array de descritores e eventos de interesse; preenchido com os eventos ocorridos na saída.
nfdsnfds_tNúmero de elementos em `fds`.
timeoutintTempo máximo de espera em milissegundos; -1 bloqueia indefinidamente, 0 retorna imediatamente.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1fdsstruct pollfd *
rsiargumento 2nfdsnfds_t
rdxargumento 3timeoutint

Valor de retorno

Número de descritores com eventos pendentes (0 em timeout) em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
EINTR(4)
Chamada interrompida por um sinal.
EINVAL(22)
Argumento inválido.
ENOMEM(12)
Memória insuficiente para completar a operação.

Relacionadas