Blob
1 #include <u.h>2 #define NOPLAN9DEFINES3 #include <libc.h>4 #include <sys/time.h>5 #include <sched.h>7 int8 p9sleep(long milli)9 {10 struct timeval tv;12 if(milli == 0){13 sched_yield();14 return 0;15 }17 tv.tv_sec = milli/1000;18 tv.tv_usec = (milli%1000)*1000;19 return select(0, 0, 0, 0, &tv);20 }22 long23 p9alarm(ulong milli)24 {25 struct itimerval itv;26 struct itimerval oitv;28 itv.it_interval.tv_sec = 0;29 itv.it_interval.tv_usec = 0;30 itv.it_value.tv_sec = milli/1000;31 itv.it_value.tv_usec = (milli%1000)*1000;32 if(setitimer(ITIMER_REAL, &itv, &oitv) < 0)33 return -1;34 return oitv.it_value.tv_sec*1000+oitv.it_value.tv_usec/1000;35 }