#include #include int main(int argc, char **argv) { int i, r; unsigned long delta; struct timeval beg, end; struct timespec ts; struct timespec rest; ts.tv_sec = 0; ts.tv_nsec = 900000000; // > 1 msec // while (ts.tv_nsec > 1000000) { r = gettimeofday(&beg, NULL); if (r < 0) break; r = nanosleep(&ts, &rest); if (r < 0) break; r = gettimeofday(&end, NULL); if (r < 0) break; delta = (end.tv_sec - beg.tv_sec) * 1000 * 1000; delta = delta + (end.tv_usec - beg.tv_usec); printf("requested: %lu us, got: %lu us, diff: %li us\n", (ts.tv_nsec / 1000), delta, delta - (ts.tv_nsec / 1000)); // 1 msec // ts.tv_nsec -= 1000000; } printf("ts.tv_nsec: %lu\n", ts.tv_nsec); return 0; }