Voltar à lista
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 2

Nota

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âmetroTipoDescrição
clockidclockid_tRelógio a consultar.
tpstruct timespec *Recebe o horário atual (segundos e nanossegundos).

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1clockidclockid_t
rsiargumento 2tpstruct 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.

Relacionadas