Linux x86_64Tempo & temporizadores#222
timer_create
Cria um temporizador POSIX por processo, associado a um relógio e a um mecanismo de notificação.
Descrição
Mais flexível que `setitimer`: suporta múltiplos temporizadores independentes por processo e notificação tanto por sinal quanto por thread nova (SIGEV_THREAD), baseado em qualquer clockid suportado (CLOCK_REALTIME, CLOCK_MONOTONIC, etc.).
Header:
time.hman 2Assinatura
int timer_create(
clockid_t clockid,
struct sigevent * sevp,
timer_t * timerid
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| clockid | clockid_t | Relógio base do temporizador. |
| sevp | struct sigevent * | Como notificar a expiração (sinal, thread, ou nada). |
| timerid | timer_t * | Recebe o identificador do novo temporizador. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | clockidclockid_t |
| rsi | argumento 2 | sevpstruct sigevent * |
| rdx | argumento 3 | timeridtimer_t * |
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.
- EINVAL(22)
- Argumento inválido.
- ENOMEM(12)
- Memória insuficiente para completar a operação.