Linux x86_64Tempo & temporizadores#230
clock_nanosleep
Suspende a thread chamadora até um instante ou por uma duração, relativa a um relógio específico.
Descrição
Generaliza `nanosleep`, permitindo dormir até um timestamp absoluto (TIMER_ABSTIME) em qualquer relógio suportado — essencial para agendar acordar em um instante exato sem sofrer 'drift' acumulado de somar durações repetidamente.
Header:
time.hman 2Assinatura
int clock_nanosleep(
clockid_t clockid,
int flags,
const struct timespec * request,
struct timespec * remain
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| clockid | clockid_t | Relógio de referência. |
| flags | int | TIMER_ABSTIME para tempo absoluto, ou 0 para relativo. |
| request | const struct timespec * | Instante ou duração da pausa. |
| remain | struct timespec * | Se não for NULL e a chamada for relativa, recebe o tempo restante caso interrompida. |
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 | flagsint |
| rdx | argumento 3 | requestconst struct timespec * |
| r10 | argumento 4 | remainstruct timespec * |
Valor de retorno
0 em sucesso; um código de erro positivo diretamente como valor de retorno (não via errno) em caso de falha.
Códigos de erro (errno)
- EINTR(4)
- Chamada interrompida por um sinal.
- EINVAL(22)
- Argumento inválido.
- EFAULT(14)
- Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
Relacionadas
Equivalente em Windows Win32