diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-05-20 05:01:26 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-05-20 05:01:26 +0200 |
commit | 7abf926bcf5a4f301a9ab48173093524196fd8ce (patch) | |
tree | ed1a2ed8ea003fd04e477e4c1105ecd87bdb8728 /sys/src/libc/9sys/time.c | |
parent | c7be3ba9e65adcde52b942449a3e9efd2b12382e (diff) |
libc: dont cache /dev/bintime filedescriptor for nsec()
Diffstat (limited to 'sys/src/libc/9sys/time.c')
-rw-r--r-- | sys/src/libc/9sys/time.c | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/sys/src/libc/9sys/time.c b/sys/src/libc/9sys/time.c index 3e5f83b04..23ef3d1ba 100644 --- a/sys/src/libc/9sys/time.c +++ b/sys/src/libc/9sys/time.c @@ -1,50 +1,12 @@ #include <u.h> #include <libc.h> - -/* - * After a fork with fd's copied, both fd's are pointing to - * the same Chan structure. Since the offset is kept in the Chan - * structure, the seek's and read's in the two processes can - * compete at moving the offset around. Hence the unusual loop - * in the middle of this routine. - */ -static long -oldtime(long *tp) -{ - char b[20]; - static int f = -1; - int i, retries; - long t; - - memset(b, 0, sizeof(b)); - for(retries = 0; retries < 100; retries++){ - if(f < 0) - f = open("/dev/time", OREAD|OCEXEC); - if(f < 0) - break; - if(seek(f, 0, 0) < 0 || (i = read(f, b, sizeof(b))) < 0){ - close(f); - f = -1; - } else { - if(i != 0) - break; - } - } - t = atol(b); - if(tp) - *tp = t; - return t; -} - long time(long *tp) { vlong t; t = nsec()/1000000000LL; - if(t == 0) - t = oldtime(0); if(tp != nil) *tp = t; return t; |