mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-14 16:58:05 +00:00
api.c poolpriority changes
This commit is contained in:
parent
fe23dfd3d4
commit
854a80ff03
@ -321,7 +321,14 @@ miner.php - an example web page to access the API
|
|||||||
Feature Changelog for external applications using the API:
|
Feature Changelog for external applications using the API:
|
||||||
|
|
||||||
|
|
||||||
API V1.14
|
API V1.15
|
||||||
|
|
||||||
|
Added API commands:
|
||||||
|
'poolpriority'
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
API V1.14 (cgminer v2.5.0)
|
||||||
|
|
||||||
Modified API commands:
|
Modified API commands:
|
||||||
'stats' - more icarus timing stats added
|
'stats' - more icarus timing stats added
|
||||||
|
74
api.c
74
api.c
@ -166,7 +166,7 @@ static const char SEPARATOR = '|';
|
|||||||
#define SEPSTR "|"
|
#define SEPSTR "|"
|
||||||
static const char GPUSEP = ',';
|
static const char GPUSEP = ',';
|
||||||
|
|
||||||
static const char *APIVERSION = "1.14";
|
static const char *APIVERSION = "1.15";
|
||||||
static const char *DEAD = "Dead";
|
static const char *DEAD = "Dead";
|
||||||
static const char *SICK = "Sick";
|
static const char *SICK = "Sick";
|
||||||
static const char *NOSTART = "NoStart";
|
static const char *NOSTART = "NoStart";
|
||||||
@ -339,7 +339,6 @@ static const char *JSON_PARAMETER = "parameter";
|
|||||||
#define MSG_ACCDENY 45
|
#define MSG_ACCDENY 45
|
||||||
#define MSG_ACCOK 46
|
#define MSG_ACCOK 46
|
||||||
#define MSG_ENAPOOL 47
|
#define MSG_ENAPOOL 47
|
||||||
#define MSG_POOLPRIO 73
|
|
||||||
#define MSG_DISPOOL 48
|
#define MSG_DISPOOL 48
|
||||||
#define MSG_ALRENAP 49
|
#define MSG_ALRENAP 49
|
||||||
#define MSG_ALRDISP 50
|
#define MSG_ALRDISP 50
|
||||||
@ -373,6 +372,8 @@ static const char *JSON_PARAMETER = "parameter";
|
|||||||
#define MSG_MINESTATS 70
|
#define MSG_MINESTATS 70
|
||||||
#define MSG_MISCHK 71
|
#define MSG_MISCHK 71
|
||||||
#define MSG_CHECK 72
|
#define MSG_CHECK 72
|
||||||
|
#define MSG_POOLPRIO 73
|
||||||
|
#define MSG_DUPPID 74
|
||||||
|
|
||||||
enum code_severity {
|
enum code_severity {
|
||||||
SEVERITY_ERR,
|
SEVERITY_ERR,
|
||||||
@ -386,6 +387,7 @@ enum code_parameters {
|
|||||||
PARAM_GPU,
|
PARAM_GPU,
|
||||||
PARAM_PGA,
|
PARAM_PGA,
|
||||||
PARAM_CPU,
|
PARAM_CPU,
|
||||||
|
PARAM_PID,
|
||||||
PARAM_GPUMAX,
|
PARAM_GPUMAX,
|
||||||
PARAM_PGAMAX,
|
PARAM_PGAMAX,
|
||||||
PARAM_CPUMAX,
|
PARAM_CPUMAX,
|
||||||
@ -503,6 +505,7 @@ struct CODES {
|
|||||||
{ SEVERITY_SUCC, MSG_ACCOK, PARAM_NONE, "Privileged access OK" },
|
{ SEVERITY_SUCC, MSG_ACCOK, PARAM_NONE, "Privileged access OK" },
|
||||||
{ SEVERITY_SUCC, MSG_ENAPOOL, PARAM_POOL, "Enabling pool %d:'%s'" },
|
{ SEVERITY_SUCC, MSG_ENAPOOL, PARAM_POOL, "Enabling pool %d:'%s'" },
|
||||||
{ SEVERITY_SUCC, MSG_POOLPRIO,PARAM_NONE, "Changed pool priorities" },
|
{ SEVERITY_SUCC, MSG_POOLPRIO,PARAM_NONE, "Changed pool priorities" },
|
||||||
|
{ SEVERITY_ERR, MSG_DUPPID, PARAM_PID, "Duplicate pool specified %d" },
|
||||||
{ SEVERITY_SUCC, MSG_DISPOOL, PARAM_POOL, "Disabling pool %d:'%s'" },
|
{ SEVERITY_SUCC, MSG_DISPOOL, PARAM_POOL, "Disabling pool %d:'%s'" },
|
||||||
{ SEVERITY_INFO, MSG_ALRENAP, PARAM_POOL, "Pool %d:'%s' already enabled" },
|
{ SEVERITY_INFO, MSG_ALRENAP, PARAM_POOL, "Pool %d:'%s' already enabled" },
|
||||||
{ SEVERITY_INFO, MSG_ALRDISP, PARAM_POOL, "Pool %d:'%s' already disabled" },
|
{ SEVERITY_INFO, MSG_ALRDISP, PARAM_POOL, "Pool %d:'%s' already disabled" },
|
||||||
@ -1064,6 +1067,7 @@ static char *message(int messageid, int paramid, char *param2, bool isjson)
|
|||||||
case PARAM_GPU:
|
case PARAM_GPU:
|
||||||
case PARAM_PGA:
|
case PARAM_PGA:
|
||||||
case PARAM_CPU:
|
case PARAM_CPU:
|
||||||
|
case PARAM_PID:
|
||||||
sprintf(buf, codes[i].description, paramid);
|
sprintf(buf, codes[i].description, paramid);
|
||||||
break;
|
break;
|
||||||
case PARAM_POOL:
|
case PARAM_POOL:
|
||||||
@ -2132,46 +2136,62 @@ static void enablepool(__maybe_unused SOCKETTYPE c, char *param, bool isjson, __
|
|||||||
|
|
||||||
static void poolpriority(__maybe_unused SOCKETTYPE c, char *param, bool isjson, __maybe_unused char group)
|
static void poolpriority(__maybe_unused SOCKETTYPE c, char *param, bool isjson, __maybe_unused char group)
|
||||||
{
|
{
|
||||||
SETUP_STRTOK_TS;
|
char *ptr, *next;
|
||||||
int total_pools_ = total_pools; // Keep a local copy, to be more threadsafe
|
int i, pr, prio = 0;
|
||||||
char *a;
|
|
||||||
int i, prio = 0, e = -1;
|
|
||||||
|
|
||||||
if (total_pools_ == 0) {
|
// TODO: all cgminer code needs a mutex added everywhere for change
|
||||||
|
// access to total_pools and also parts of the pools[] array,
|
||||||
|
// just copying total_pools here wont solve that
|
||||||
|
|
||||||
|
if (total_pools == 0) {
|
||||||
strcpy(io_buffer, message(MSG_NOPOOL, 0, NULL, isjson));
|
strcpy(io_buffer, message(MSG_NOPOOL, 0, NULL, isjson));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool pools_changed[total_pools_];
|
if (param == NULL || *param == '\0') {
|
||||||
for (i = 0; i < total_pools_; ++i)
|
strcpy(io_buffer, message(MSG_MISPID, 0, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pools_changed[total_pools];
|
||||||
|
for (i = 0; i < total_pools; ++i)
|
||||||
pools_changed[i] = false;
|
pools_changed[i] = false;
|
||||||
|
|
||||||
a = strtok_ts(param, ",");
|
next = param;
|
||||||
do {
|
while (next && *next) {
|
||||||
i = strtol(a, &a, 10);
|
ptr = next;
|
||||||
if (unlikely(*a > 0x20 || i < 0 || i >= total_pools)) {
|
next = strchr(ptr, ',');
|
||||||
e = (*a > 0x20) ? -2 : i;
|
if (next)
|
||||||
continue;
|
*(next++) = '\0';
|
||||||
|
|
||||||
|
i = atoi(ptr);
|
||||||
|
if (i < 0 || i >= total_pools) {
|
||||||
|
strcpy(io_buffer, message(MSG_INVPID, i, NULL, isjson));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pools_changed[i]) {
|
||||||
|
strcpy(io_buffer, message(MSG_DUPPID, i, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
pools[i]->prio = prio++;
|
pools[i]->prio = prio++;
|
||||||
pools_changed[i] = true;
|
pools_changed[i] = true;
|
||||||
} while ( (a = strtok_ts(NULL, ",")) );
|
}
|
||||||
|
|
||||||
for (i = 0; i < total_pools_; ++i)
|
// In priority order, cycle through the unchanged pools and append them
|
||||||
if (!pools_changed[i])
|
for (pr = 0; pr < total_pools; pr++)
|
||||||
pools[i]->prio = prio++;
|
for (i = 0; i < total_pools; i++) {
|
||||||
|
if (!pools_changed[i] && pools[i]->prio == pr) {
|
||||||
|
pools[i]->prio = prio++;
|
||||||
|
pools_changed[i] = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (current_pool()->prio)
|
if (current_pool()->prio)
|
||||||
switch_pools(NULL);
|
switch_pools(NULL);
|
||||||
|
|
||||||
if (e != -1) {
|
|
||||||
if (e == -2)
|
|
||||||
strcpy(io_buffer, message(MSG_MISPID, 0, NULL, isjson));
|
|
||||||
else
|
|
||||||
strcpy(io_buffer, message(MSG_INVPID, e, NULL, isjson));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
strcpy(io_buffer, message(MSG_POOLPRIO, 0, NULL, isjson));
|
strcpy(io_buffer, message(MSG_POOLPRIO, 0, NULL, isjson));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
11
compat.h
11
compat.h
@ -9,10 +9,6 @@
|
|||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
// NOTE: Windows strtok uses a thread-local static buffer, so this is safe
|
|
||||||
#define SETUP_STRTOK_TS /*nothing needed*/
|
|
||||||
#define strtok_ts strtok
|
|
||||||
|
|
||||||
#include "miner.h" // for timersub
|
#include "miner.h" // for timersub
|
||||||
|
|
||||||
static inline int nanosleep(const struct timespec *req, struct timespec *rem)
|
static inline int nanosleep(const struct timespec *req, struct timespec *rem)
|
||||||
@ -76,13 +72,8 @@ typedef long suseconds_t;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PTH(thr) ((thr)->pth.p)
|
#define PTH(thr) ((thr)->pth.p)
|
||||||
#else /* ! WIN32 */
|
#else
|
||||||
|
|
||||||
#define PTH(thr) ((thr)->pth)
|
#define PTH(thr) ((thr)->pth)
|
||||||
|
|
||||||
#define SETUP_STRTOK_TS char*_strtok_ts_saveptr
|
|
||||||
#define strtok_ts(str, delim) strtok_r(str, delim, &_strtok_ts_saveptr)
|
|
||||||
|
|
||||||
#endif /* WIN32 */
|
#endif /* WIN32 */
|
||||||
|
|
||||||
#endif /* __COMPAT_H__ */
|
#endif /* __COMPAT_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user