Blame


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