.TH TIME 2
.SH NAME
bintime, time, nsec \- time in seconds and nanoseconds since epoch
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.nf
.B
int bintime(int fd, vlong *nsec, vlong *ticks, vlong *hz)
.PP
.B
long time(long *tp)
.PP
.B
vlong nsec(void)
.SH DESCRIPTION
Both
.I time
and
.I nsec
return the time since the epoch 00:00:00 GMT, Jan. 1, 1970.
The return value of the former is in seconds and the latter in nanoseconds.
For
.IR time ,
if
.I tp
is not zero then
.BI * tp
is also set to the answer.
.PP
These functions work by reading
.BR /dev/bintime ,
opening that file when they are first called.
.PP
.B Bintime
reads from
.BR fd 
instead.  It is assumed to have the format of
.BR "/dev/bintime" .
If
.B fd
is -1, then
.B "/dev/bintime"
is opened.
The non-null
.B vlong
arguments are set to nanoseconds since start of
epoch, hardware clock ticks, and hardware clock frequency.
The given file descriptor is returned on success.  On failure,
the file descriptor is closed and
.B -1
is returned.
.SH SOURCE
.B /sys/src/libc/9sys/bintime.c
.br
.B /sys/src/libc/9sys/time.c
.br
.B /sys/src/libc/9sys/nsec.c
.SH SEE ALSO
.IR cputime (2),
.IR cons (3)
.SH DIAGNOSTICS
Sets
.IR errstr .
.SH BUGS
Both
.I time
and
.I nsec
maintain a static file descriptor.
This can cause problems with programs
that share memory but not file descriptors.
Use
.I bintime
instead.
