diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-04-10 02:52:31 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-04-10 02:52:31 +0200 |
commit | 5e37087451d857f3d329341319511d00f0c49c38 (patch) | |
tree | 29de45583b7b71cf158e3fe37295517df8dedae2 /sys/src/ape/lib/bsd | |
parent | 3ba1197aeb382e1750cbb0f2567794bd4482e1e2 (diff) |
ape: add internal _NSEC() function and make gettimeofday() use it
Diffstat (limited to 'sys/src/ape/lib/bsd')
-rw-r--r-- | sys/src/ape/lib/bsd/gettimeofday.c | 41 |
1 files changed, 4 insertions, 37 deletions
diff --git a/sys/src/ape/lib/bsd/gettimeofday.c b/sys/src/ape/lib/bsd/gettimeofday.c index ee347f36a..4de4973c1 100644 --- a/sys/src/ape/lib/bsd/gettimeofday.c +++ b/sys/src/ape/lib/bsd/gettimeofday.c @@ -1,49 +1,16 @@ #include <sys/types.h> #include <time.h> #include <sys/time.h> -#include <string.h> -#include "sys9.h" -typedef unsigned long long uvlong; -typedef long long vlong; -typedef unsigned char uchar; - -static uvlong order = 0x0001020304050607ULL; - -static void -be2vlong(vlong *to, uchar *f) -{ - uchar *t, *o; - int i; - - t = (uchar*)to; - o = (uchar*)ℴ - for(i = 0; i < 8; i++) - t[o[i]] = f[i]; -} +/* ap/plan9/9nsec.c */ +extern long long _NSEC(void); int gettimeofday(struct timeval *tp, struct timezone *tzp) { - uchar b[8]; - vlong t; - int opened; - static int fd = -1; - - opened = 0; - for(;;) { - if(fd < 0) - if(opened++ || - (fd = _OPEN("/dev/bintime", OREAD|OCEXEC)) < 0) - return 0; - if(_PREAD(fd, b, sizeof b, 0) == sizeof b) - break; /* leave fd open for future use */ - /* short read, perhaps try again */ - _CLOSE(fd); - fd = -1; - } - be2vlong(&t, b); + long long t; + t = _NSEC(); tp->tv_sec = t/1000000000; tp->tv_usec = (t/1000)%1000000; |