#include #include #include int main() { int key; int n; int tmp; uint64_t total = 0; int size = 100; int repeat_rate = 30000; struct timeval time1[size]; struct timeval time2; struct timeval timediff; /* Add one because we drop the first key */ size++; fprintf(stderr, "Press and hold ENTER key\n"); tmp = gettimeofday(&time1[0], NULL); for (n = 1; n < size; n++) { key = getchar(); tmp = gettimeofday(&time1[n], NULL); } /* Ignore the first key */ for (n = 2; n < size; n++) { timediff.tv_sec = time1[n].tv_sec - time1[n-1].tv_sec; timediff.tv_usec = time1[n].tv_usec - time1[n-1].tv_usec; if (timediff.tv_usec < 0) { timediff.tv_usec += 1000000; timediff.tv_sec -= 1; } total += timediff.tv_usec; tmp = 0; if ((timediff.tv_usec > (repeat_rate + 1000)) || (timediff.tv_usec < (repeat_rate - 1000))) tmp = 1; printf("%ld.%06ld, %d\n", timediff.tv_sec, timediff.tv_usec, tmp); } printf("Total = %lu\n", total / (size - 1)); }