mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-26 22:44:21 +00:00
Initialise devices before attempting to connect to pools to allow their thread prepare function to be called before having to connect to pools.
Conflicts: cgminer.c
This commit is contained in:
parent
7d2cee3066
commit
79521fe8f0
69
cgminer.c
69
cgminer.c
@ -7801,6 +7801,37 @@ int main(int argc, char *argv[])
|
||||
quit(1, "Failed to calloc mining_thr[%d]", i);
|
||||
}
|
||||
|
||||
// Start threads
|
||||
k = 0;
|
||||
for (i = 0; i < total_devices; ++i) {
|
||||
struct cgpu_info *cgpu = devices[i];
|
||||
cgpu->thr = malloc(sizeof(*cgpu->thr) * (cgpu->threads+1));
|
||||
cgpu->thr[cgpu->threads] = NULL;
|
||||
cgpu->status = LIFE_INIT;
|
||||
|
||||
for (j = 0; j < cgpu->threads; ++j, ++k) {
|
||||
thr = get_thread(k);
|
||||
thr->id = k;
|
||||
thr->cgpu = cgpu;
|
||||
thr->device_thread = j;
|
||||
|
||||
if (!cgpu->drv->thread_prepare(thr))
|
||||
continue;
|
||||
|
||||
if (unlikely(thr_info_create(thr, NULL, miner_thread, thr)))
|
||||
quit(1, "thread %d create failed", thr->id);
|
||||
|
||||
cgpu->thr[j] = thr;
|
||||
|
||||
/* Enable threads for devices set not to mine but disable
|
||||
* their queue in case we wish to enable them later */
|
||||
if (cgpu->deven != DEV_DISABLED) {
|
||||
applog(LOG_DEBUG, "Pushing sem post to thread %d", thr->id);
|
||||
cgsem_post(&thr->sem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (opt_benchmark)
|
||||
goto begin_bench;
|
||||
|
||||
@ -7858,44 +7889,6 @@ begin_bench:
|
||||
cgtime(&total_tv_end);
|
||||
get_datestamp(datestamp, sizeof(datestamp), &total_tv_start);
|
||||
|
||||
// Start threads
|
||||
k = 0;
|
||||
for (i = 0; i < total_devices; ++i) {
|
||||
struct cgpu_info *cgpu = devices[i];
|
||||
cgpu->thr = malloc(sizeof(*cgpu->thr) * (cgpu->threads+1));
|
||||
cgpu->thr[cgpu->threads] = NULL;
|
||||
cgpu->status = LIFE_INIT;
|
||||
|
||||
for (j = 0; j < cgpu->threads; ++j, ++k) {
|
||||
thr = get_thread(k);
|
||||
thr->id = k;
|
||||
thr->cgpu = cgpu;
|
||||
thr->device_thread = j;
|
||||
|
||||
if (!cgpu->drv->thread_prepare(thr))
|
||||
continue;
|
||||
|
||||
if (unlikely(thr_info_create(thr, NULL, miner_thread, thr)))
|
||||
quit(1, "thread %d create failed", thr->id);
|
||||
|
||||
cgpu->thr[j] = thr;
|
||||
|
||||
/* Enable threads for devices set not to mine but disable
|
||||
* their queue in case we wish to enable them later */
|
||||
if (cgpu->deven != DEV_DISABLED) {
|
||||
applog(LOG_DEBUG, "Pushing sem post to thread %d", thr->id);
|
||||
cgsem_post(&thr->sem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
applog(LOG_INFO, "%d gpu miner threads started", gpu_threads);
|
||||
for (i = 0; i < nDevs; i++)
|
||||
pause_dynamic_threads(i);
|
||||
|
||||
cgtime(&total_tv_start);
|
||||
cgtime(&total_tv_end);
|
||||
|
||||
watchpool_thr_id = 2;
|
||||
thr = &control_thr[watchpool_thr_id];
|
||||
/* start watchpool thread */
|
||||
|
Loading…
x
Reference in New Issue
Block a user