00001
00002 #include "_timer.h"
00003
00004 #include <string.h>
00005 #include <stdlib.h>
00006 #include <stdio.h>
00007 #include <signal.h>
00008
00009 static want_to_quit_tesleep = 0;
00010
00011 static void
00012 quit_tesleep (int sig)
00013 {
00014 want_to_quit_tesleep = 1;
00015 }
00016 main (int argc, char **argv)
00017 {
00018 double last_time;
00019 double cycle_time;
00020 double current_time;
00021 double max_time = 0.0;
00022 double min_time = 1e9;
00023 double start_time;
00024 double stop_time;
00025 int num_cycles;
00026 double total_time;
00027 int i;
00028
00029 if (argc > 1)
00030 {
00031 cycle_time = atof (argv[1]);
00032 }
00033 else
00034 {
00035 cycle_time = clk_tck ();
00036 }
00037
00038 if (argc > 2)
00039 {
00040 num_cycles = strtol (argv[2], NULL, 0);
00041 }
00042 else
00043 {
00044 num_cycles = 10000;
00045 }
00046
00047 signal (SIGINT, quit_tesleep);
00048 printf ("cycle_time = %f\n", cycle_time);
00049 printf ("num_cycles = %d\n", num_cycles);
00050 fflush (stdout);
00051 esleep (cycle_time);
00052
00053 start_time = last_time = etime ();
00054 for (i = 0; i < num_cycles && !want_to_quit_tesleep; i++)
00055 {
00056 esleep (cycle_time);
00057 current_time = etime ();
00058 if (current_time - last_time > max_time)
00059 {
00060 max_time = (current_time - last_time);
00061 }
00062 if (current_time - last_time < min_time)
00063 {
00064 min_time = (current_time - last_time);
00065 }
00066 last_time = current_time;
00067 }
00068 stop_time = etime ();
00069 total_time = stop_time - start_time;
00070 printf ("num_cycles = %d\n", i);
00071 printf ("total time = %f\n", total_time);
00072 printf ("avg cycle time = %f\n", (total_time) / i);
00073 printf ("min cycle time = %f\n", min_time);
00074 printf ("max cycle time = %f\n", max_time);
00075
00076 }