blob: 367063678baf5c1e46c9ae06145dea695f5a1f7a [file] [log] [blame]
rscfd04aac2003-11-23 18:12:54 +00001#include <u.h>
rsc8ad51792004-03-25 23:03:57 +00002#include <sys/time.h>
3#include <time.h>
4#include <sys/resource.h>
rscfd04aac2003-11-23 18:12:54 +00005#define NOPLAN9DEFINES
6#include <libc.h>
7
8long
9p9times(long *t)
10{
11 struct rusage ru, cru;
12
13 if(getrusage(0, &ru) < 0 || getrusage(-1, &cru) < 0)
14 return -1;
15
16 t[0] = ru.ru_utime.tv_sec*1000 + ru.ru_utime.tv_usec/1000;
17 t[1] = ru.ru_stime.tv_sec*1000 + ru.ru_stime.tv_usec/1000;
18 t[2] = cru.ru_utime.tv_sec*1000 + cru.ru_utime.tv_usec/1000;
19 t[3] = cru.ru_stime.tv_sec*1000 + cru.ru_stime.tv_usec/1000;
20
21 /* BUG */
22 return t[0]+t[1]+t[2]+t[3];
23}
24
25double
26p9cputime(void)
27{
28 long t[4];
29 double d;
30
31 if(p9times(t) < 0)
32 return -1.0;
33
34 d = (double)t[0]+(double)t[1]+(double)t[2]+(double)t[3];
35 return d/1000.0;
36}
37
38vlong
39p9nsec(void)
40{
41 struct timeval tv;
42
43 if(gettimeofday(&tv, 0) < 0)
44 return -1;
45
46 return (vlong)tv.tv_sec*1000*1000*1000 + tv.tv_usec*1000;
47}
48
49long
50p9time(long *tt)
51{
52 long t;
53 t = time(0);
54 if(tt)
55 *tt = t;
56 return t;
57}
58