> > > >> Has anyone address this problem already. I have looked int the > > >> cygwin and list and found the only topic > > >http://sources.redhat.com/ml/cygwin/2001-12/msg00201.html > > In the attached file there is a "patch" for gettmieofday: > > ------- > int gettimeofday(struct timeval *tv, struct timezone *tz) > { > LARGE_INTEGER t; > FILETIME f; > double microseconds; > static LARGE_INTEGER offset; > static double frequencyToMicroseconds; > static int initialized = 0; > static BOOL usePerformanceCounter = 0; > > if (!initialized) { > LARGE_INTEGER performanceFrequency; > initialized = 1; > usePerformanceCounter = QueryPerformanceFrequency(&performanceFrequency); > if (usePerformanceCounter) { > QueryPerformanceCounter(&offset); > frequencyToMicroseconds = (double)performanceFrequency.QuadPart / > 1000000.; > } else { > offset = getFILETIMEoffset(); > frequencyToMicroseconds = 10.; > } > } > if (usePerformanceCounter) QueryPerformanceCounter(&t); > else { > GetSystemTimeAsFileTime(&f); > t.QuadPart = f.dwHighDateTime; > t.QuadPart <<= 32; > t.QuadPart |= f.dwLowDateTime; > } > > t.QuadPart -= offset.QuadPart; > microseconds = (double)t.QuadPart / frequencyToMicroseconds; > t.QuadPart = microseconds; > tv->tv_sec = t.QuadPart / 1000000; > tv->tv_usec = t.QuadPart % 1000000; > return (0); > } > ------------ > > The following Microsoft page ( > http://www.vbapi.com/ref/q/queryperformancecounter.html ) says it supported > on all version (startig from NT3.51 and Windows95) an, at least, it calls > GetTickCount()*1000. > > > >> In http://www-106.ibm.com/developerworks/library/l-rt1/ there is a > > >> detailed instruction how to use the hugh resolution counter. . > > >> > > >> $ cat timeofday.c #include <sys/time.h> > > >> > > >> int main() { struct timeval tp; long a,b; > > >> > > >> gettimeofday(&tp,0); a = > > >> ((unsigned)tp.tv_sec)*1000000+((unsigned)tp.tv_usec); > > >> > > >> printf("timestamp (us): %d\n",a); usleep(1000); gettimeofday(&tp,0); b > > >> = ((unsigned)tp.tv_sec)*1000000+((unsigned)tp.tv_usec); > > >printf("timestamp > > >> (us): %d (diff) %d\n",b,b-a); } > > I adapted the code to find exactly the minimum time slice, and not "how well > 1ms of retard is seen" (it was a 0ns or 15000ns, this is always 15000ns; > moreover printf is out of the "timing" section):
isn't the time slice about 10ms. ? -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/