#define UNRESONABLE_LATENCY 40000000/* 40ms in nanosecs */
#define TIMER_SECS 1 int alarmcount; int clock_id; struct timespec start_time; longlong max_latency_ns; int timer_fired_early;
char *clockstring(int clockid)
{ switch (clockid) { case CLOCK_REALTIME: return"CLOCK_REALTIME"; case CLOCK_MONOTONIC: return"CLOCK_MONOTONIC"; case CLOCK_PROCESS_CPUTIME_ID: return"CLOCK_PROCESS_CPUTIME_ID"; case CLOCK_THREAD_CPUTIME_ID: return"CLOCK_THREAD_CPUTIME_ID"; case CLOCK_MONOTONIC_RAW: return"CLOCK_MONOTONIC_RAW"; case CLOCK_REALTIME_COARSE: return"CLOCK_REALTIME_COARSE"; case CLOCK_MONOTONIC_COARSE: return"CLOCK_MONOTONIC_COARSE"; case CLOCK_BOOTTIME: return"CLOCK_BOOTTIME"; case CLOCK_REALTIME_ALARM: return"CLOCK_REALTIME_ALARM"; case CLOCK_BOOTTIME_ALARM: return"CLOCK_BOOTTIME_ALARM"; case CLOCK_TAI: return"CLOCK_TAI";
} return"UNKNOWN_CLOCKID";
}
longlong timespec_sub(struct timespec a, struct timespec b)
{ longlong ret = NSEC_PER_SEC * b.tv_sec + b.tv_nsec;
ret -= NSEC_PER_SEC * a.tv_sec + a.tv_nsec; return ret;
}
ret |= do_timer(clock_id, TIMER_ABSTIME);
ret |= do_timer(clock_id, 0);
ret |= do_timer_oneshot(clock_id, TIMER_ABSTIME);
ret |= do_timer_oneshot(clock_id, 0);
} if (ret)
ksft_exit_fail();
ksft_exit_pass();
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.