1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-01-10 23:08:07 +00:00

Provide a ms based sleep function that uses nanosleep to avoid the inaccuracy of usleep on SMP systems.

This commit is contained in:
Con Kolivas 2012-07-06 15:01:39 +10:00
parent 390d77a202
commit 3271be145f
2 changed files with 12 additions and 1 deletions

View File

@ -426,7 +426,7 @@ struct thr_info {
extern int thr_info_create(struct thr_info *thr, pthread_attr_t *attr, void *(*start) (void *), void *arg); extern int thr_info_create(struct thr_info *thr, pthread_attr_t *attr, void *(*start) (void *), void *arg);
extern void thr_info_cancel(struct thr_info *thr); extern void thr_info_cancel(struct thr_info *thr);
extern void thr_info_freeze(struct thr_info *thr); extern void thr_info_freeze(struct thr_info *thr);
extern void nmsleep(unsigned int msecs);
struct string_elist { struct string_elist {
char *string; char *string;

11
util.c
View File

@ -687,3 +687,14 @@ void thr_info_cancel(struct thr_info *thr)
PTH(thr) = 0L; PTH(thr) = 0L;
} }
} }
/* Provide a ms based sleep that uses nanosleep to avoid poor usleep accuracy
* on SMP machines */
void nmsleep(unsigned int msecs)
{
struct timespec twait;
twait.tv_sec = msecs / 1000;
twait.tv_nsec = (uint64_t)(msecs * 1000000) - (uint64_t)(twait.tv_sec / 1000000000);
nanosleep(&twait, NULL);
}