Subroutine C per fornire il tempo in secondi
Il modulo second.c contiene una routine C che richiama le routine timer.s per accedere al contenuto del registro superiore e inferiore.
Restituisce un valore reale di precisione doppia del tempo in secondi.
double second()
{
int ts, tl, tu;
ts = rtc_upper(); /* seconds */
tl = rtc_lower(); /* nanoseconds */
tu = rtc_upper(); /* Check for a carry from */
if (ts != tu) /* the lower reg to the upper. */
tl = rtc_lower(); /* Recover from the race condition. */
return ( tu + (double)tl/1000000000 );
}La sottoroutine second () può essere richiamata da una routine C o FORTRAN.
Nota: a seconda del periodo di tempo trascorso dall'ultima reimpostazione del sistema, il modulo second.c potrebbe produrre una quantità variabile di precisione. Maggiore è il tempo trascorso dalla reimpostazione, maggiore è il numero di bit di precisione utilizzati dalla parte del numero di secondi interi. La tecnica mostrata nella prima parte di questa appendice evita questo problema eseguendo la sottrazione richiesta per ottenere un tempo trascorso prima della conversione in virgola mobile.