|
|
|
@ -2809,17 +2809,29 @@ static void __kill_work(void)
@@ -2809,17 +2809,29 @@ static void __kill_work(void)
|
|
|
|
|
thr = &control_thr[watchdog_thr_id]; |
|
|
|
|
thr_info_cancel(thr); |
|
|
|
|
|
|
|
|
|
applog(LOG_DEBUG, "Killing off mining threads"); |
|
|
|
|
/* Kill the mining threads*/ |
|
|
|
|
applog(LOG_DEBUG, "Shutting down mining threads"); |
|
|
|
|
for (i = 0; i < mining_threads; i++) { |
|
|
|
|
pthread_t *pth = NULL; |
|
|
|
|
struct cgpu_info *cgpu; |
|
|
|
|
struct device_drv *drv; |
|
|
|
|
|
|
|
|
|
thr = get_thread(i); |
|
|
|
|
if (thr) { |
|
|
|
|
struct device_drv *drv = thr->cgpu->drv; |
|
|
|
|
if (!thr) |
|
|
|
|
continue; |
|
|
|
|
cgpu = thr->cgpu; |
|
|
|
|
if (!cgpu) |
|
|
|
|
continue; |
|
|
|
|
drv = cgpu->drv; |
|
|
|
|
if (!drv) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
drv->thread_shutdown(thr); |
|
|
|
|
} |
|
|
|
|
cgpu->shutdown = true; |
|
|
|
|
drv->thread_shutdown(thr); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
applog(LOG_DEBUG, "Killing off mining threads"); |
|
|
|
|
/* Kill the mining threads*/ |
|
|
|
|
for (i = 0; i < mining_threads; i++) { |
|
|
|
|
pthread_t *pth = NULL; |
|
|
|
|
|
|
|
|
|
if (thr && PTH(thr) != 0L) |
|
|
|
|
pth = &thr->pth; |
|
|
|
|