Blame


1 fd04aace 2003-11-23 devnull #include <u.h>
2 fd04aace 2003-11-23 devnull #define NOPLAN9DEFINES
3 fd04aace 2003-11-23 devnull #include <sys/time.h>
4 fd04aace 2003-11-23 devnull #include <sched.h>
5 04084d4e 2005-07-21 devnull #include <libc.h>
6 fd04aace 2003-11-23 devnull
7 fd04aace 2003-11-23 devnull int
8 fd04aace 2003-11-23 devnull p9sleep(long milli)
9 fd04aace 2003-11-23 devnull {
10 fd04aace 2003-11-23 devnull struct timeval tv;
11 fd04aace 2003-11-23 devnull
12 fd04aace 2003-11-23 devnull if(milli == 0){
13 fd04aace 2003-11-23 devnull sched_yield();
14 fd04aace 2003-11-23 devnull return 0;
15 fd04aace 2003-11-23 devnull }
16 fd04aace 2003-11-23 devnull
17 fd04aace 2003-11-23 devnull tv.tv_sec = milli/1000;
18 fd04aace 2003-11-23 devnull tv.tv_usec = (milli%1000)*1000;
19 fd04aace 2003-11-23 devnull return select(0, 0, 0, 0, &tv);
20 fd04aace 2003-11-23 devnull }
21 fd04aace 2003-11-23 devnull
22 fd04aace 2003-11-23 devnull long
23 fd04aace 2003-11-23 devnull p9alarm(ulong milli)
24 fd04aace 2003-11-23 devnull {
25 fd04aace 2003-11-23 devnull struct itimerval itv;
26 fd04aace 2003-11-23 devnull struct itimerval oitv;
27 fd04aace 2003-11-23 devnull
28 fd04aace 2003-11-23 devnull itv.it_interval.tv_sec = 0;
29 fd04aace 2003-11-23 devnull itv.it_interval.tv_usec = 0;
30 fd04aace 2003-11-23 devnull itv.it_value.tv_sec = milli/1000;
31 fd04aace 2003-11-23 devnull itv.it_value.tv_usec = (milli%1000)*1000;
32 fd04aace 2003-11-23 devnull if(setitimer(ITIMER_REAL, &itv, &oitv) < 0)
33 fd04aace 2003-11-23 devnull return -1;
34 fd04aace 2003-11-23 devnull return oitv.it_value.tv_sec*1000+oitv.it_value.tv_usec/1000;
35 fd04aace 2003-11-23 devnull }