1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
/*
* (C) Finite State Machine Labs Inc. 1999 business@fsmlabs.com
*
* Released under the terms of GPL 2.
* Open RTLinux makes use of a patented process described in
* US Patent 5,995,745. Use of this process is governed
* by the Open RTLinux Patent License which can be obtained from
* www.fsmlabs.com/PATENT or by sending email to
* licensequestions@fsmlabs.com
*/
#include <stdio.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <rtl_fifo.h>
#include <rtl_time.h>
struct samp {
hrtime_t min, max, total;
hrtime_t period;
int cnt;
};
int main()
{
int fd0;
int n;
struct samp sm;
FILE *f;
int i = 0;
if ((fd0 = open("/dev/rtf0", O_RDONLY)) < 0) {
fprintf(stderr, "Error opening /dev/rtf0\n");
exit(1);
}
while (i < 50) {
n = read(fd0, &sm, sizeof(sm));
#define NS_TO_US(x) ((x)/(NSECS_PER_SEC/1000000))
if (
((ulong) NS_TO_US((int) sm.min - (int) sm.period) <
-30)
|| ((ulong) NS_TO_US((int) sm.max - (int) sm.period) >
30)) exit - 1;
i++;
#if 0
printf
("min: %5ldus \tavg: %5ldus \tmax: %5ldus \tperiod: %5ldus\n",
(ulong) NS_TO_US((int) sm.min - (int) sm.period),
(ulong) NS_TO_US(((int) sm.total / (int) sm.cnt) -
(int) sm.period),
(ulong) NS_TO_US((int) sm.max - (int) sm.period),
(ulong) NS_TO_US((int) sm.period));
fflush(stdout);
fprintf(f, "%d %ld %5ld %5ld %5ld\n",
i, (ulong) NS_TO_US((int) sm.min /*-sm.period*/ ),
(ulong) NS_TO_US(((int) sm.total / (int) sm.cnt) /*-sm.period*/ ),
(ulong) NS_TO_US((int) sm.max /*-sm.period*/ ),
(ulong) NS_TO_US((int) sm.period));
fflush(f);
#endif
}
return 0;
}
|