#include <sys/select.h> #include <stdio.h> #include <time.h> int main(void) { struct timespec dts, ets, sts, ts; for (;;) { clock_gettime(CLOCK_MONOTONIC, &sts); #ifdef PSELECT ts.tv_sec = 0; ts.tv_nsec = 250000000; pselect(0, NULL, NULL, NULL, &ts, NULL); #else struct timeval tv; tv.tv_sec = 0; tv.tv_usec = 250000; select(0, NULL, NULL, NULL, &tv); ts.tv_nsec = tv.tv_usec * 1000; #endif clock_gettime(CLOCK_MONOTONIC, &ets); timespecsub(&ets, &sts, &dts); if (dts.tv_nsec < 200000000) { fprintf(stderr, "too little sleep r=%d s=%d\n", dts.tv_nsec, ts.tv_nsec); } } return 0; }