2009-10-24 18 views
10

struct timeval rappresenta e istante in tempo con due membri, tv_sec (secondi) e tv_usec (microsecondi). In questa rappresentazione, tv_usec non è di per sé un tempo assoluto, ma è un offset al secondo inferiore di tv_sec.Esiste un modo standard per convertire una struct timeval in una struct timespec?

struct timespecstruct timespec funziona allo stesso modo eccetto che invece di microsecondi è lo scostamento (tv_nsec) è memorizzato in unità di nanosecondi.

La domanda è: esiste un metodo standard per la conversione tra questi due?

risposta

13

Guardando a this doc, penso che moltiplicando tv_usec per 1000 è sufficiente per ottenere tv_nsec.

Più importante, sospetto sia la fonte delle diverse strutture: potrebbero essere riempite da diversi orologi.

+0

Dal tv_nsec è un sub secondo di offset, che cosa se la moltiplicazione per 1000 risulta in un valore superiore a 1 miliardo ... Non avresti quindi bisogno di aggiungere 1 a tv_sec e quindi impostare tv_nsec sull'importo superiore a 1 miliardo? – dicroce

+9

No perché 'tv_usec', essendo un offset in microsecondi, è garantito che sia inferiore a 1 milione, quindi moltiplicarlo per 1000 dà un valore inferiore a 1 miliardo. – JaakkoK

+1

E se vuoi passare da un timespec ad un altro, dividi 'tv_nsec' per 1000 per ottenere' tv_usec' (eventualmente aggiungendo 500 prima, per arrotondare). –

Problemi correlati