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.6Assinatura
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âmetro | Tipo | Descrição |
|---|---|---|
| mqdes | mqd_t | Descritor da fila, obtido com mq_open. |
| msg_ptr | const char * | Conteúdo da mensagem. |
| msg_len | size_t | Tamanho da mensagem. |
| msg_prio | unsigned int | Prioridade da mensagem (maior valor = maior prioridade). |
| abs_timeout | const struct timespec * | Instante absoluto limite para a operação bloquear; NULL bloqueia indefinidamente. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | mqdesmqd_t |
| rsi | argumento 2 | msg_ptrconst char * |
| rdx | argumento 3 | msg_lensize_t |
| r10 | argumento 4 | msg_priounsigned int |
| r8 | argumento 5 | abs_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).