Linux x86_64Tempo & temporizadores#228
clock_gettime
Consulta a hora atual de um relógio do sistema, com resolução de nanossegundos.
Descrição
A forma moderna e preferida de obter horário no Linux, suportando múltiplos relógios: CLOCK_REALTIME (horário de parede, pode saltar), CLOCK_MONOTONIC (nunca retrocede, ideal para medir intervalos), CLOCK_PROCESS_CPUTIME_ID, CLOCK_BOOTTIME, entre outros. Implementada via vDSO para evitar o custo de uma troca de contexto completa na maioria dos casos.
Header:
time.hman 2Nota
Para medir durações, prefira sempre CLOCK_MONOTONIC (ou CLOCK_MONOTONIC_RAW) — CLOCK_REALTIME pode saltar para trás por correções NTP ou ajuste manual do relógio.
Assinatura
int clock_gettime(clockid_t clockid, struct timespec * tp);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| clockid | clockid_t | Relógio a consultar. |
| tp | struct timespec * | Recebe o horário atual (segundos e nanossegundos). |
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 | tpstruct timespec * |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EFAULT(14)
- Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
- EINVAL(22)
- Argumento inválido.