mirror of
https://github.com/GOSTSec/sgminer
synced 2025-02-08 13:04:27 +00:00
Convert the control_lock to a cg_lock.
This commit is contained in:
parent
74164a3ae6
commit
0bbaaa9723
6
api.c
6
api.c
@ -2449,16 +2449,16 @@ static void switchpool(struct io_data *io_data, __maybe_unused SOCKETTYPE c, cha
|
|||||||
}
|
}
|
||||||
|
|
||||||
id = atoi(param);
|
id = atoi(param);
|
||||||
mutex_lock(&control_lock);
|
cg_rlock(&control_lock);
|
||||||
if (id < 0 || id >= total_pools) {
|
if (id < 0 || id >= total_pools) {
|
||||||
mutex_unlock(&control_lock);
|
cg_runlock(&control_lock);
|
||||||
message(io_data, MSG_INVPID, id, NULL, isjson);
|
message(io_data, MSG_INVPID, id, NULL, isjson);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pool = pools[id];
|
pool = pools[id];
|
||||||
pool->enabled = POOL_ENABLED;
|
pool->enabled = POOL_ENABLED;
|
||||||
mutex_unlock(&control_lock);
|
cg_runlock(&control_lock);
|
||||||
switch_pools(pool);
|
switch_pools(pool);
|
||||||
|
|
||||||
message(io_data, MSG_SWITCHP, id, NULL, isjson);
|
message(io_data, MSG_SWITCHP, id, NULL, isjson);
|
||||||
|
28
cgminer.c
28
cgminer.c
@ -195,7 +195,7 @@ pthread_cond_t gws_cond;
|
|||||||
double total_mhashes_done;
|
double total_mhashes_done;
|
||||||
static struct timeval total_tv_start, total_tv_end;
|
static struct timeval total_tv_start, total_tv_end;
|
||||||
|
|
||||||
pthread_mutex_t control_lock;
|
cglock_t control_lock;
|
||||||
pthread_mutex_t stats_lock;
|
pthread_mutex_t stats_lock;
|
||||||
|
|
||||||
int hw_errors;
|
int hw_errors;
|
||||||
@ -503,9 +503,9 @@ struct pool *current_pool(void)
|
|||||||
{
|
{
|
||||||
struct pool *pool;
|
struct pool *pool;
|
||||||
|
|
||||||
mutex_lock(&control_lock);
|
cg_rlock(&control_lock);
|
||||||
pool = currentpool;
|
pool = currentpool;
|
||||||
mutex_unlock(&control_lock);
|
cg_runlock(&control_lock);
|
||||||
return pool;
|
return pool;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1423,9 +1423,9 @@ static struct work *make_work(void)
|
|||||||
|
|
||||||
if (unlikely(!work))
|
if (unlikely(!work))
|
||||||
quit(1, "Failed to calloc work in make_work");
|
quit(1, "Failed to calloc work in make_work");
|
||||||
mutex_lock(&control_lock);
|
cg_wlock(&control_lock);
|
||||||
work->id = total_work++;
|
work->id = total_work++;
|
||||||
mutex_unlock(&control_lock);
|
cg_wunlock(&control_lock);
|
||||||
return work;
|
return work;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2411,14 +2411,14 @@ static uint64_t share_diff(const struct work *work)
|
|||||||
if (unlikely(!d64))
|
if (unlikely(!d64))
|
||||||
d64 = 1;
|
d64 = 1;
|
||||||
ret = diffone / d64;
|
ret = diffone / d64;
|
||||||
mutex_lock(&control_lock);
|
cg_wlock(&control_lock);
|
||||||
if (ret > best_diff) {
|
if (ret > best_diff) {
|
||||||
best_diff = ret;
|
best_diff = ret;
|
||||||
suffix_string(best_diff, best_share, 0);
|
suffix_string(best_diff, best_share, 0);
|
||||||
}
|
}
|
||||||
if (ret > work->pool->best_diff)
|
if (ret > work->pool->best_diff)
|
||||||
work->pool->best_diff = ret;
|
work->pool->best_diff = ret;
|
||||||
mutex_unlock(&control_lock);
|
cg_wunlock(&control_lock);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3390,7 +3390,7 @@ void switch_pools(struct pool *selected)
|
|||||||
struct pool *pool, *last_pool;
|
struct pool *pool, *last_pool;
|
||||||
int i, pool_no, next_pool;
|
int i, pool_no, next_pool;
|
||||||
|
|
||||||
mutex_lock(&control_lock);
|
cg_wlock(&control_lock);
|
||||||
last_pool = currentpool;
|
last_pool = currentpool;
|
||||||
pool_no = currentpool->pool_no;
|
pool_no = currentpool->pool_no;
|
||||||
|
|
||||||
@ -3445,7 +3445,7 @@ void switch_pools(struct pool *selected)
|
|||||||
|
|
||||||
currentpool = pools[pool_no];
|
currentpool = pools[pool_no];
|
||||||
pool = currentpool;
|
pool = currentpool;
|
||||||
mutex_unlock(&control_lock);
|
cg_wunlock(&control_lock);
|
||||||
|
|
||||||
/* Set the lagging flag to avoid pool not providing work fast enough
|
/* Set the lagging flag to avoid pool not providing work fast enough
|
||||||
* messages in failover only mode since we have to get all fresh work
|
* messages in failover only mode since we have to get all fresh work
|
||||||
@ -4816,9 +4816,9 @@ static int cp_prio(void)
|
|||||||
{
|
{
|
||||||
int prio;
|
int prio;
|
||||||
|
|
||||||
mutex_lock(&control_lock);
|
cg_rlock(&control_lock);
|
||||||
prio = currentpool->prio;
|
prio = currentpool->prio;
|
||||||
mutex_unlock(&control_lock);
|
cg_runlock(&control_lock);
|
||||||
return prio;
|
return prio;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6977,14 +6977,14 @@ static void *test_pool_thread(void *arg)
|
|||||||
pool_tset(pool, &pool->lagging);
|
pool_tset(pool, &pool->lagging);
|
||||||
pool_tclear(pool, &pool->idle);
|
pool_tclear(pool, &pool->idle);
|
||||||
|
|
||||||
mutex_lock(&control_lock);
|
cg_wlock(&control_lock);
|
||||||
if (!pools_active) {
|
if (!pools_active) {
|
||||||
currentpool = pool;
|
currentpool = pool;
|
||||||
if (pool->pool_no != 0)
|
if (pool->pool_no != 0)
|
||||||
applog(LOG_NOTICE, "Switching to pool %d %s - first alive pool", pool->pool_no, pool->rpc_url);
|
applog(LOG_NOTICE, "Switching to pool %d %s - first alive pool", pool->pool_no, pool->rpc_url);
|
||||||
pools_active = true;
|
pools_active = true;
|
||||||
}
|
}
|
||||||
mutex_unlock(&control_lock);
|
cg_wunlock(&control_lock);
|
||||||
pool_resus(pool);
|
pool_resus(pool);
|
||||||
} else
|
} else
|
||||||
pool_died(pool);
|
pool_died(pool);
|
||||||
@ -7035,7 +7035,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
mutex_init(&hash_lock);
|
mutex_init(&hash_lock);
|
||||||
mutex_init(&console_lock);
|
mutex_init(&console_lock);
|
||||||
mutex_init(&control_lock);
|
cglock_init(&control_lock);
|
||||||
mutex_init(&stats_lock);
|
mutex_init(&stats_lock);
|
||||||
mutex_init(&sharelog_lock);
|
mutex_init(&sharelog_lock);
|
||||||
mutex_init(&ch_lock);
|
mutex_init(&ch_lock);
|
||||||
|
2
miner.h
2
miner.h
@ -793,7 +793,7 @@ extern int opt_expiry;
|
|||||||
extern pthread_mutex_t cgusb_lock;
|
extern pthread_mutex_t cgusb_lock;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern pthread_mutex_t control_lock;
|
extern cglock_t control_lock;
|
||||||
extern pthread_mutex_t hash_lock;
|
extern pthread_mutex_t hash_lock;
|
||||||
extern pthread_mutex_t console_lock;
|
extern pthread_mutex_t console_lock;
|
||||||
extern pthread_mutex_t ch_lock;
|
extern pthread_mutex_t ch_lock;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user