Voltar à lista
Linux x86_64IPC & sincronização#242

mq_timedsend

Envia uma mensagem para uma fila POSIX, com prioridade e timeout opcional.

Descrição

Mensagens são entregues ao receptor em ordem de prioridade (não necessariamente de chegada), diferente das filas System V.

Header: mqueue.hman 2Desde o kernel 2.6.6

Assinatura

int mq_timedsend(
    mqd_t mqdes,
    const char * msg_ptr,
    size_t msg_len,
    unsigned int msg_prio,
    const struct timespec * abs_timeout
);

Parâmetros

ParâmetroTipoDescrição
mqdesmqd_tDescritor da fila, obtido com mq_open.
msg_ptrconst char *Conteúdo da mensagem.
msg_lensize_tTamanho da mensagem.
msg_priounsigned intPrioridade da mensagem (maior valor = maior prioridade).
abs_timeoutconst struct timespec *Instante absoluto limite para a operação bloquear; NULL bloqueia indefinidamente.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1mqdesmqd_t
rsiargumento 2msg_ptrconst char *
rdxargumento 3msg_lensize_t
r10argumento 4msg_priounsigned int
r8argumento 5abs_timeoutconst struct timespec *

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
EINTR(4)
Chamada interrompida por um sinal.
EINVAL(22)
Argumento inválido.
EMSGSIZE(90)
Mensagem grande demais para o socket.
ETIMEDOUT(110)
Conexão expirou (timeout).

Relacionadas