Browse Source

Restart_wait is only called with a ms value so incorporate that into the function.

nfactor-troky
Con Kolivas 13 years ago
parent
commit
75eca07823
  1. 10
      cgminer.c
  2. 16
      driver-bitforce.c
  3. 2
      miner.h

10
cgminer.c

@ -2490,19 +2490,23 @@ bool queue_request(struct thr_info *thr, bool needed);
* work restart is required. Returns the value of pthread_cond_timedwait * work restart is required. Returns the value of pthread_cond_timedwait
* which is zero if the condition was met or ETIMEDOUT if not. * which is zero if the condition was met or ETIMEDOUT if not.
*/ */
int restart_wait(struct timeval *tdiff) int restart_wait(unsigned int mstime)
{ {
struct timeval now, then; struct timeval now, then, tdiff;
struct timespec abstime; struct timespec abstime;
int rc; int rc;
tdiff.tv_sec = mstime / 1000;
tdiff.tv_usec = mstime * 1000 - (tdiff.tv_sec * 1000000);
gettimeofday(&now, NULL); gettimeofday(&now, NULL);
timeradd(&now, tdiff, &then); timeradd(&now, &tdiff, &then);
abstime.tv_sec = then.tv_sec; abstime.tv_sec = then.tv_sec;
abstime.tv_nsec = then.tv_usec * 1000; abstime.tv_nsec = then.tv_usec * 1000;
mutex_lock(&restart_lock); mutex_lock(&restart_lock);
rc = pthread_cond_timedwait(&restart_cond, &restart_lock, &abstime); rc = pthread_cond_timedwait(&restart_cond, &restart_lock, &abstime);
mutex_unlock(&restart_lock); mutex_unlock(&restart_lock);
return rc; return rc;
} }

16
driver-bitforce.c

@ -410,17 +410,10 @@ static void biforce_thread_enable(struct thr_info *thr)
bitforce_init(bitforce); bitforce_init(bitforce);
} }
static void ms_to_timeval(unsigned int mstime, struct timeval *ttime)
{
ttime->tv_sec = mstime / 1000;
ttime->tv_usec = mstime * 1000 - (ttime->tv_sec * 1000000);
}
static uint64_t bitforce_scanhash(struct thr_info *thr, struct work *work, uint64_t __maybe_unused max_nonce) static uint64_t bitforce_scanhash(struct thr_info *thr, struct work *work, uint64_t __maybe_unused max_nonce)
{ {
struct cgpu_info *bitforce = thr->cgpu; struct cgpu_info *bitforce = thr->cgpu;
unsigned int sleep_time; unsigned int sleep_time;
struct timeval tdiff;
uint64_t ret; uint64_t ret;
bitforce->wait_ms = 0; bitforce->wait_ms = 0;
@ -430,8 +423,7 @@ static uint64_t bitforce_scanhash(struct thr_info *thr, struct work *work, uint6
/* Initially wait 2/3 of the average cycle time so we can request more /* Initially wait 2/3 of the average cycle time so we can request more
work before full scan is up */ work before full scan is up */
sleep_time = (2 * bitforce->sleep_ms) / 3; sleep_time = (2 * bitforce->sleep_ms) / 3;
ms_to_timeval(sleep_time, &tdiff); if (!restart_wait(sleep_time))
if (!restart_wait(&tdiff))
return 1; return 1;
bitforce->wait_ms += sleep_time; bitforce->wait_ms += sleep_time;
@ -439,15 +431,13 @@ static uint64_t bitforce_scanhash(struct thr_info *thr, struct work *work, uint6
/* Now wait athe final 1/3rd; no bitforce should be finished by now */ /* Now wait athe final 1/3rd; no bitforce should be finished by now */
sleep_time = bitforce->sleep_ms - sleep_time; sleep_time = bitforce->sleep_ms - sleep_time;
ms_to_timeval(sleep_time, &tdiff); if (!restart_wait(sleep_time))
if (!restart_wait(&tdiff))
return 1; return 1;
bitforce->wait_ms += sleep_time; bitforce->wait_ms += sleep_time;
} else { } else {
sleep_time = bitforce->sleep_ms; sleep_time = bitforce->sleep_ms;
ms_to_timeval(sleep_time, &tdiff); if (!restart_wait(sleep_time))
if (!restart_wait(&tdiff))
return 1; return 1;
} }

2
miner.h

@ -577,7 +577,7 @@ extern pthread_cond_t restart_cond;
extern void thread_reportin(struct thr_info *thr); extern void thread_reportin(struct thr_info *thr);
extern bool queue_request(struct thr_info *thr, bool needed); extern bool queue_request(struct thr_info *thr, bool needed);
extern int restart_wait(struct timeval *tdiff); extern int restart_wait(unsigned int mstime);
extern void kill_work(void); extern void kill_work(void);

Loading…
Cancel
Save