diff options
-rw-r--r-- | tools/testing/selftests/timers/rtctest.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/testing/selftests/timers/rtctest.c b/tools/testing/selftests/timers/rtctest.c index 1e06f4602195..d80ae852334d 100644 --- a/tools/testing/selftests/timers/rtctest.c +++ b/tools/testing/selftests/timers/rtctest.c @@ -36,6 +36,7 @@ int main(int argc, char **argv) unsigned long tmp, data; struct rtc_time rtc_tm; const char *rtc = default_rtc; + struct timeval start, end, diff; switch (argc) { case 2: @@ -230,12 +231,24 @@ test_PIE: } for (i=1; i<21; i++) { + gettimeofday(&start, NULL); /* This blocks */ retval = read(fd, &data, sizeof(unsigned long)); if (retval == -1) { perror("read"); exit(errno); } + gettimeofday(&end, NULL); + timersub(&end, &start, &diff); + if (diff.tv_sec > 0 || + diff.tv_usec > ((1000000L / tmp) * 1.10)) { + fprintf(stderr, "\nPIE delta error: %ld.%06ld should be close to 0.%06ld\n", + diff.tv_sec, diff.tv_usec, + (1000000L / tmp)); + fflush(stdout); + exit(-1); + } + fprintf(stderr, " %d",i); fflush(stderr); irqcount++; |