Browse Source

Execute driver shutdown sequence during kill_work.

nfactor-troky
Con Kolivas 12 years ago
parent
commit
6972ec62a7
  1. 10
      cgminer.c
  2. 2
      miner.h

10
cgminer.c

@ -2813,6 +2813,12 @@ static void __kill_work(void)
pthread_t *pth = NULL; pthread_t *pth = NULL;
thr = get_thread(i); thr = get_thread(i);
if (thr) {
struct device_drv *drv = thr->cgpu->drv;
drv->thread_shutdown(thr);
}
if (thr && PTH(thr) != 0L) if (thr && PTH(thr) != 0L)
pth = &thr->pth; pth = &thr->pth;
thr_info_cancel(thr); thr_info_cancel(thr);
@ -5661,7 +5667,7 @@ static void hash_sole_work(struct thr_info *mythr)
sdiff.tv_sec = sdiff.tv_usec = 0; sdiff.tv_sec = sdiff.tv_usec = 0;
cgtime(&tv_lastupdate); cgtime(&tv_lastupdate);
while (42) { while (likely(!cgpu->shutdown)) {
struct work *work = get_work(mythr, thr_id); struct work *work = get_work(mythr, thr_id);
int64_t hashes; int64_t hashes;
@ -5937,7 +5943,7 @@ void hash_queued_work(struct thr_info *mythr)
const int thr_id = mythr->id; const int thr_id = mythr->id;
int64_t hashes_done = 0; int64_t hashes_done = 0;
while (42) { while (likely(!cgpu->shutdown)) {
struct timeval diff; struct timeval diff;
int64_t hashes; int64_t hashes;

2
miner.h

@ -542,6 +542,8 @@ struct cgpu_info {
pthread_rwlock_t qlock; pthread_rwlock_t qlock;
struct work *queued_work; struct work *queued_work;
unsigned int queued_count; unsigned int queued_count;
bool shutdown;
}; };
extern bool add_cgpu(struct cgpu_info*); extern bool add_cgpu(struct cgpu_info*);

Loading…
Cancel
Save