Generalise add_pool() functions since they're repeated in add_pool_details.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
diff --git a/cgminer.c b/cgminer.c
index b2397e5..2733b8f 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -378,7 +378,8 @@ static void sharelog(const char*disposition, const struct work*work)
applog(LOG_ERR, "sharelog fwrite error");
}
-static void add_pool(void)
+/* Return value is ignored if not called from add_pool_details */
+static struct pool *add_pool(void)
{
struct pool *pool;
@@ -393,6 +394,8 @@ static void add_pool(void)
/* Make sure the pool doesn't think we've been idle since time 0 */
pool->tv_idle.tv_sec = ~0UL;
+
+ return pool;
}
/* Pool variant of test and set */
@@ -4351,19 +4354,12 @@ char *curses_input(const char *query)
int add_pool_details(bool live, char *url, char *user, char *pass)
{
- struct pool *pool = NULL;
+ struct pool *pool;
if (total_pools == MAX_POOLS)
return ADD_POOL_MAXIMUM;
- pool = calloc(sizeof(struct pool), 1);
- if (!pool)
- quit(1, "Failed to realloc pools in add_pool_details");
- pool->pool_no = total_pools;
- pool->prio = total_pools;
- if (unlikely(pthread_mutex_init(&pool->pool_lock, NULL)))
- quit (1, "Failed to pthread_mutex_init in input_pool");
- INIT_LIST_HEAD(&pool->curlring);
+ pool = add_pool();
pool->rpc_url = url;
pool->rpc_user = user;
@@ -4373,14 +4369,11 @@ int add_pool_details(bool live, char *url, char *user, char *pass)
quit(1, "Failed to malloc userpass");
sprintf(pool->rpc_userpass, "%s:%s", pool->rpc_user, pool->rpc_pass);
- pool->tv_idle.tv_sec = ~0UL;
-
/* Test the pool is not idle if we're live running, otherwise
* it will be tested separately */
pool->enabled = true;
if (live && !pool_active(pool, false))
pool->idle = true;
- pools[total_pools++] = pool;
return ADD_POOL_OK;
}
diff --git a/miner.h b/miner.h
index 3e114c4..e74d6f2 100644
--- a/miner.h
+++ b/miner.h
@@ -641,6 +641,8 @@ struct pool {
pthread_t submit_thread;
pthread_t getwork_thread;
+ pthread_mutex_t cr_lock;
+ pthread_cond_t cr_cond;
struct list_head curlring;
};