summaryrefslogtreecommitdiff
path: root/sys/src/libc/9sys/time.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-05-20 05:01:26 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2014-05-20 05:01:26 +0200
commit7abf926bcf5a4f301a9ab48173093524196fd8ce (patch)
treeed1a2ed8ea003fd04e477e4c1105ecd87bdb8728 /sys/src/libc/9sys/time.c
parentc7be3ba9e65adcde52b942449a3e9efd2b12382e (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.c38
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;