mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-25 14:04:25 +00:00
API zero - zero statistics - all or bestshare - with optional on screen summary
This commit is contained in:
parent
bd5f20ebf5
commit
0b3d8c89c2
15
API-README
15
API-README
@ -347,6 +347,18 @@ The list of requests - a (*) means it requires privileged access - and replies a
|
|||||||
The current options are:
|
The current options are:
|
||||||
MMQ opt=clock val=160 to 230 (and a multiple of 2)
|
MMQ opt=clock val=160 to 230 (and a multiple of 2)
|
||||||
|
|
||||||
|
zero|Which,true/false (*)
|
||||||
|
none There is no reply section just the STATUS section
|
||||||
|
stating that the zero, and optional summary, was done
|
||||||
|
If Which='all', all normal cgminer and API statistics
|
||||||
|
will be zeroed other than the numbers displayed by the
|
||||||
|
usbstats and stats commands
|
||||||
|
If Which='bestshare', only the 'Best Share' values
|
||||||
|
are zeroed for each pool and the global 'Best Share'
|
||||||
|
The true/false option determines if a full summary is
|
||||||
|
shown on the cgminer display like is normally displayed
|
||||||
|
on exit.
|
||||||
|
|
||||||
When you enable, disable or restart a GPU or PGA, you will also get Thread messages
|
When you enable, disable or restart a GPU or PGA, you will also get Thread messages
|
||||||
in the cgminer status window
|
in the cgminer status window
|
||||||
|
|
||||||
@ -402,6 +414,9 @@ Feature Changelog for external applications using the API:
|
|||||||
|
|
||||||
API V1.24
|
API V1.24
|
||||||
|
|
||||||
|
Added API commands:
|
||||||
|
'zero'
|
||||||
|
|
||||||
Modified API commands:
|
Modified API commands:
|
||||||
'pools' - add 'Best Share'
|
'pools' - add 'Best Share'
|
||||||
|
|
||||||
|
58
api.c
58
api.c
@ -387,6 +387,11 @@ static const char *JSON_PARAMETER = "parameter";
|
|||||||
#define MSG_PGASETERR 93
|
#define MSG_PGASETERR 93
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define MSG_ZERMIS 94
|
||||||
|
#define MSG_ZERINV 95
|
||||||
|
#define MSG_ZERSUM 96
|
||||||
|
#define MSG_ZERNOSUM 97
|
||||||
|
|
||||||
enum code_severity {
|
enum code_severity {
|
||||||
SEVERITY_ERR,
|
SEVERITY_ERR,
|
||||||
SEVERITY_WARN,
|
SEVERITY_WARN,
|
||||||
@ -559,6 +564,10 @@ struct CODES {
|
|||||||
{ SEVERITY_SUCC, MSG_PGASETOK, PARAM_BOTH, "PGA %d set OK" },
|
{ SEVERITY_SUCC, MSG_PGASETOK, PARAM_BOTH, "PGA %d set OK" },
|
||||||
{ SEVERITY_ERR, MSG_PGASETERR, PARAM_BOTH, "PGA %d set failed: %s" },
|
{ SEVERITY_ERR, MSG_PGASETERR, PARAM_BOTH, "PGA %d set failed: %s" },
|
||||||
#endif
|
#endif
|
||||||
|
{ SEVERITY_ERR, MSG_ZERMIS, PARAM_NONE, "Missing zero parameters" },
|
||||||
|
{ SEVERITY_ERR, MSG_ZERINV, PARAM_STR, "Invalid zero parameter '%s'" },
|
||||||
|
{ SEVERITY_SUCC, MSG_ZERSUM, PARAM_STR, "Zeroed %s stats with summary" },
|
||||||
|
{ SEVERITY_SUCC, MSG_ZERNOSUM, PARAM_STR, "Zeroed %s stats without summary" },
|
||||||
{ SEVERITY_FAIL, 0, 0, NULL }
|
{ SEVERITY_FAIL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3212,6 +3221,54 @@ static void pgaset(struct io_data *io_data, __maybe_unused SOCKETTYPE c, __maybe
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void dozero(struct io_data *io_data, __maybe_unused SOCKETTYPE c, char *param, bool isjson, __maybe_unused char group)
|
||||||
|
{
|
||||||
|
if (param == NULL || *param == '\0') {
|
||||||
|
message(io_data, MSG_ZERMIS, 0, NULL, isjson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sum = strchr(param, ',');
|
||||||
|
if (sum)
|
||||||
|
*(sum++) = '\0';
|
||||||
|
if (!sum || !*sum) {
|
||||||
|
message(io_data, MSG_MISBOOL, 0, NULL, isjson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool all = false;
|
||||||
|
bool bs = false;
|
||||||
|
if (strcasecmp(param, "all") == 0)
|
||||||
|
all = true;
|
||||||
|
else if (strcasecmp(param, "bestshare") == 0)
|
||||||
|
bs = true;
|
||||||
|
|
||||||
|
if (all == false && bs == false) {
|
||||||
|
message(io_data, MSG_ZERINV, 0, param, isjson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
*sum = tolower(*sum);
|
||||||
|
if (*sum != 't' && *sum != 'f') {
|
||||||
|
message(io_data, MSG_INVBOOL, 0, NULL, isjson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool dosum = (*sum == 't');
|
||||||
|
if (dosum)
|
||||||
|
print_summary();
|
||||||
|
|
||||||
|
if (all)
|
||||||
|
zero_stats();
|
||||||
|
if (bs)
|
||||||
|
zero_bestshare();
|
||||||
|
|
||||||
|
if (dosum)
|
||||||
|
message(io_data, MSG_ZERSUM, 0, all ? "All" : "BestShare", isjson);
|
||||||
|
else
|
||||||
|
message(io_data, MSG_ZERNOSUM, 0, all ? "All" : "BestShare", isjson);
|
||||||
|
}
|
||||||
|
|
||||||
static void checkcommand(struct io_data *io_data, __maybe_unused SOCKETTYPE c, char *param, bool isjson, char group);
|
static void checkcommand(struct io_data *io_data, __maybe_unused SOCKETTYPE c, char *param, bool isjson, char group);
|
||||||
|
|
||||||
struct CMDS {
|
struct CMDS {
|
||||||
@ -3271,6 +3328,7 @@ struct CMDS {
|
|||||||
#ifdef HAVE_AN_FPGA
|
#ifdef HAVE_AN_FPGA
|
||||||
{ "pgaset", pgaset, true },
|
{ "pgaset", pgaset, true },
|
||||||
#endif
|
#endif
|
||||||
|
{ "zero", dozero, true },
|
||||||
{ NULL, NULL, false }
|
{ NULL, NULL, false }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
24
cgminer.c
24
cgminer.c
@ -2732,8 +2732,6 @@ static void disable_curses(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void print_summary(void);
|
|
||||||
|
|
||||||
static void __kill_work(void)
|
static void __kill_work(void)
|
||||||
{
|
{
|
||||||
struct thr_info *thr;
|
struct thr_info *thr;
|
||||||
@ -3915,6 +3913,20 @@ void write_config(FILE *fcfg)
|
|||||||
json_escape_free();
|
json_escape_free();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void zero_bestshare(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
best_diff = 0;
|
||||||
|
memset(best_share, 0, 8);
|
||||||
|
suffix_string(best_diff, best_share, 0);
|
||||||
|
|
||||||
|
for (i = 0; i < total_pools; i++) {
|
||||||
|
struct pool *pool = pools[i];
|
||||||
|
pool->best_diff = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void zero_stats(void)
|
void zero_stats(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -3931,10 +3943,7 @@ void zero_stats(void)
|
|||||||
total_go = 0;
|
total_go = 0;
|
||||||
total_ro = 0;
|
total_ro = 0;
|
||||||
total_secs = 1.0;
|
total_secs = 1.0;
|
||||||
best_diff = 0;
|
|
||||||
total_diff1 = 0;
|
total_diff1 = 0;
|
||||||
memset(best_share, 0, 8);
|
|
||||||
suffix_string(best_diff, best_share, 0);
|
|
||||||
found_blocks = 0;
|
found_blocks = 0;
|
||||||
total_diff_accepted = 0;
|
total_diff_accepted = 0;
|
||||||
total_diff_rejected = 0;
|
total_diff_rejected = 0;
|
||||||
@ -3956,9 +3965,10 @@ void zero_stats(void)
|
|||||||
pool->diff_rejected = 0;
|
pool->diff_rejected = 0;
|
||||||
pool->diff_stale = 0;
|
pool->diff_stale = 0;
|
||||||
pool->last_share_diff = 0;
|
pool->last_share_diff = 0;
|
||||||
pool->best_diff = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
zero_bestshare();
|
||||||
|
|
||||||
mutex_lock(&hash_lock);
|
mutex_lock(&hash_lock);
|
||||||
for (i = 0; i < total_devices; ++i) {
|
for (i = 0; i < total_devices; ++i) {
|
||||||
struct cgpu_info *cgpu = devices[i];
|
struct cgpu_info *cgpu = devices[i];
|
||||||
@ -5961,7 +5971,7 @@ static void log_print_status(struct cgpu_info *cgpu)
|
|||||||
applog(LOG_WARNING, "%s", logline);
|
applog(LOG_WARNING, "%s", logline);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_summary(void)
|
void print_summary(void)
|
||||||
{
|
{
|
||||||
struct timeval diff;
|
struct timeval diff;
|
||||||
int hours, mins, secs, i;
|
int hours, mins, secs, i;
|
||||||
|
3
miner.h
3
miner.h
@ -759,6 +759,7 @@ extern void api(int thr_id);
|
|||||||
extern struct pool *current_pool(void);
|
extern struct pool *current_pool(void);
|
||||||
extern int enabled_pools;
|
extern int enabled_pools;
|
||||||
extern bool detect_stratum(struct pool *pool, char *url);
|
extern bool detect_stratum(struct pool *pool, char *url);
|
||||||
|
extern void print_summary(void);
|
||||||
extern struct pool *add_pool(void);
|
extern struct pool *add_pool(void);
|
||||||
extern void add_pool_details(struct pool *pool, bool live, char *url, char *user, char *pass);
|
extern void add_pool_details(struct pool *pool, bool live, char *url, char *user, char *pass);
|
||||||
|
|
||||||
@ -1077,6 +1078,8 @@ extern void kill_work(void);
|
|||||||
extern void switch_pools(struct pool *selected);
|
extern void switch_pools(struct pool *selected);
|
||||||
extern void remove_pool(struct pool *pool);
|
extern void remove_pool(struct pool *pool);
|
||||||
extern void write_config(FILE *fcfg);
|
extern void write_config(FILE *fcfg);
|
||||||
|
extern void zero_bestshare(void);
|
||||||
|
extern void zero_stats(void);
|
||||||
extern void default_save_file(char *filename);
|
extern void default_save_file(char *filename);
|
||||||
extern bool log_curses_only(int prio, const char *f, va_list ap);
|
extern bool log_curses_only(int prio, const char *f, va_list ap);
|
||||||
extern void clear_logwin(void);
|
extern void clear_logwin(void);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user