Browse Source

Provide an nusleep equivalent function to nmsleep.

nfactor-troky
Con Kolivas 12 years ago
parent
commit
d52ab244ee
  1. 23
      util.c
  2. 1
      util.h

23
util.c

@ -844,6 +844,29 @@ void nmsleep(unsigned int msecs)
#endif #endif
} }
/* Same for usecs */
void nusleep(unsigned int usecs)
{
struct timespec twait, tleft;
int ret;
ldiv_t d;
#ifdef WIN32
timeBeginPeriod(1);
#endif
d = ldiv(usecs, 1000000);
tleft.tv_sec = d.quot;
tleft.tv_nsec = d.rem * 1000;
do {
twait.tv_sec = tleft.tv_sec;
twait.tv_nsec = tleft.tv_nsec;
ret = nanosleep(&twait, &tleft);
} while (ret == -1 && errno == EINTR);
#ifdef WIN32
timeEndPeriod(1);
#endif
}
/* This is a cgminer gettimeofday wrapper. Since we always call gettimeofday /* This is a cgminer gettimeofday wrapper. Since we always call gettimeofday
* with tz set to NULL, and windows' default resolution is only 15ms, this * with tz set to NULL, and windows' default resolution is only 15ms, this
* gives us higher resolution times on windows. */ * gives us higher resolution times on windows. */

1
util.h

@ -58,6 +58,7 @@ int thr_info_create(struct thr_info *thr, pthread_attr_t *attr, void *(*start) (
void thr_info_freeze(struct thr_info *thr); void thr_info_freeze(struct thr_info *thr);
void thr_info_cancel(struct thr_info *thr); void thr_info_cancel(struct thr_info *thr);
void nmsleep(unsigned int msecs); void nmsleep(unsigned int msecs);
void nusleep(unsigned int usecs);
void cgtime(struct timeval *tv); void cgtime(struct timeval *tv);
void subtime(struct timeval *a, struct timeval *b); void subtime(struct timeval *a, struct timeval *b);
void addtime(struct timeval *a, struct timeval *b); void addtime(struct timeval *a, struct timeval *b);

Loading…
Cancel
Save