13 #include <windows.h>
\r
17 #include <sys/time.h> // Mac OS X needs this one first
\r
18 #include <sys/resource.h>
\r
19 #include <sys/types.h>
\r
30 static double duration (const struct timeval *t);
\r
35 // input_available()
\r
37 bool input_available() {
\r
41 struct timeval time_val[1];
\r
44 FD_SET(STDIN_FILENO,set);
\r
46 time_val->tv_sec = 0;
\r
47 time_val->tv_usec = 0;
\r
49 val = select(STDIN_FILENO+1,set,NULL,NULL,time_val);
\r
50 if (val == -1) my_fatal("input_available(): select(): %s\n",strerror(errno));
\r
60 struct timeval tv[1];
\r
61 struct timezone tz[1];
\r
63 tz->tz_minuteswest = 0;
\r
64 tz->tz_dsttime = 0; // DST_NONE not declared in linux
\r
66 if (gettimeofday(tv,tz) == -1) {
\r
67 my_fatal("now_real(): gettimeofday(): %s\n",strerror(errno));
\r
70 return duration(tv);
\r
77 struct rusage ru[1];
\r
79 if (getrusage(RUSAGE_SELF,ru) == -1) {
\r
80 my_fatal("now_cpu(): getrusage(): %s\n",strerror(errno));
\r
83 return duration(&ru->ru_utime);
\r
88 static double duration(const struct timeval *tv) {
\r
90 return tv->tv_sec + tv->tv_usec * 1E-6;
\r
95 double now_real(void) {
\r
96 return (double) GetTickCount() / 1000.0;
\r
101 // end of posix.cpp
\r