-
-StgInt
-prim_getClockTime(StgByteArray sec, StgByteArray nsec)
-{
-#if defined(_WIN32) && !defined(cygwin32_TARGET_OS)
- /* see getClockTime() comment re: ftime() & cygwin */
- struct timeb t;
-
- _ftime(&t);
-
- ((unsigned long int *)sec)[0] = t.time;
- ((unsigned long int *)nsec)[0] = t.millitm * 1000;
- return 0;
-#elif defined(HAVE_TIME_H)
- time_t t;
- if ((t = time(NULL)) == (time_t) -1) {
- cvtErrno();
- stdErrno();
- return -1;
- }
- ((StgInt64*)sec)[0] = t;
- ((StgInt64*)nsec)[0] = 0;
- return 0;
-#elif defined(HAVE_GETCLOCK)
- struct timespec tp;
-
- if (getclock(TIMEOFDAY, &tp) != 0) {
- cvtErrno();
- stdErrno();
- return -1;
- }
- ((StgInt64*)sec)[0] = tp.tv_sec;
- ((StgInt64*)nsec)[0] = tp.tv_nsec;
- return 0;
-#elif defined(HAVE_GETTIMEOFDAY)
- struct timeval tp;
-
- if (gettimeofday(&tp, NULL) != 0) {
- cvtErrno();
- stdErrno();
- return -1;
- }
- ((StgInt64*)sec)[0] = tp.tv_sec;
- ((StgInt64*)nsec)[0] = tp.tv_usec * 1000;
- return 0;
-#else
-#error "getClockTime: don't know how to get at the clock's time"
-#endif
-}