Linux x86_64IPC & sincronização#220
semtimedop
Como semop, mas com um timeout para o bloqueio.
Descrição
Evita bloquear indefinidamente esperando um semáforo System V ficar disponível.
Header:
sys/sem.hman 2Desde o kernel 2.6Assinatura
int semtimedop(
int semid,
struct sembuf * sops,
size_t nsops,
const struct timespec * timeout
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| semid | int | Identificador do conjunto de semáforos. |
| sops | struct sembuf * | Array de operações a executar. |
| nsops | size_t | Número de operações em `sops`. |
| timeout | const struct timespec * | Tempo máximo de bloqueio, ou NULL para bloquear indefinidamente. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | semidint |
| rsi | argumento 2 | sopsstruct sembuf * |
| rdx | argumento 3 | nsopssize_t |
| r10 | argumento 4 | timeoutconst struct timespec * |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- E2BIG(7)
- Lista de argumentos grande demais.
- EAGAIN(11)
- Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
- EIDRM(43)
- Identificador removido (IPC System V).
- EINTR(4)
- Chamada interrompida por um sinal.
- EINVAL(22)
- Argumento inválido.