#include #define NOPLAN9DEFINES #include #include #include int p9sleep(long milli) { struct timeval tv; if(milli == 0){ sched_yield(); return 0; } tv.tv_sec = milli/1000; tv.tv_usec = (milli%1000)*1000; return select(0, 0, 0, 0, &tv); } long p9alarm(ulong milli) { struct itimerval itv; struct itimerval oitv; itv.it_interval.tv_sec = 0; itv.it_interval.tv_usec = 0; itv.it_value.tv_sec = milli/1000; itv.it_value.tv_usec = (milli%1000)*1000; if(setitimer(ITIMER_REAL, &itv, &oitv) < 0) return -1; return oitv.it_value.tv_sec*1000+oitv.it_value.tv_usec/1000; }