mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-23 13:04:29 +00:00
Merge branch 'master' of github.com:ckolivas/cgminer
This commit is contained in:
commit
22bd72012f
15
README
15
README
@ -749,8 +749,19 @@ The list of requests - a (*) means it requires privileged access - and replies a
|
|||||||
to the API and success if you do have privilege
|
to the API and success if you do have privilege
|
||||||
The command doesn't change anything in cgminer
|
The command doesn't change anything in cgminer
|
||||||
|
|
||||||
When you enable, disable or restart a GPU, you will also get Thread messages in
|
pgaenable|N (*)
|
||||||
the cgminer status window
|
none There is no reply section just the STATUS section
|
||||||
|
stating the results of the enable request
|
||||||
|
You cannot enable a PGA if it's status is not WELL
|
||||||
|
This is only available if PGA mining is enabled
|
||||||
|
|
||||||
|
pgadisable|N (*)
|
||||||
|
none There is no reply section just the STATUS section
|
||||||
|
stating the results of the disable request
|
||||||
|
This is only available if PGA mining is enabled
|
||||||
|
|
||||||
|
When you enable, disable or restart a GPU or PGA, you will also get Thread messages
|
||||||
|
in the cgminer status window
|
||||||
|
|
||||||
When you switch to a different pool to the current one, you will get a
|
When you switch to a different pool to the current one, you will get a
|
||||||
'Switching to URL' message in the cgminer status windows
|
'Switching to URL' message in the cgminer status windows
|
||||||
|
108
api.c
108
api.c
@ -329,6 +329,14 @@ static const char *JSON_PARAMETER = "parameter";
|
|||||||
#define MSG_NUMPGA 59
|
#define MSG_NUMPGA 59
|
||||||
#define MSG_NOTIFY 60
|
#define MSG_NOTIFY 60
|
||||||
|
|
||||||
|
#if defined(USE_BITFORCE) || defined(USE_ICARUS)
|
||||||
|
#define MSG_PGALRENA 61
|
||||||
|
#define MSG_PGALRDIS 62
|
||||||
|
#define MSG_PGAENA 63
|
||||||
|
#define MSG_PGADIS 64
|
||||||
|
#define MSG_PGAUNW 65
|
||||||
|
#endif
|
||||||
|
|
||||||
enum code_severity {
|
enum code_severity {
|
||||||
SEVERITY_ERR,
|
SEVERITY_ERR,
|
||||||
SEVERITY_WARN,
|
SEVERITY_WARN,
|
||||||
@ -400,6 +408,11 @@ struct CODES {
|
|||||||
{ SEVERITY_ERR, MSG_PGANON, PARAM_NONE, "No PGAs" },
|
{ SEVERITY_ERR, MSG_PGANON, PARAM_NONE, "No PGAs" },
|
||||||
{ SEVERITY_SUCC, MSG_PGADEV, PARAM_PGA, "PGA%d" },
|
{ SEVERITY_SUCC, MSG_PGADEV, PARAM_PGA, "PGA%d" },
|
||||||
{ SEVERITY_ERR, MSG_INVPGA, PARAM_PGAMAX, "Invalid PGA id %d - range is 0 - %d" },
|
{ SEVERITY_ERR, MSG_INVPGA, PARAM_PGAMAX, "Invalid PGA id %d - range is 0 - %d" },
|
||||||
|
{ SEVERITY_INFO, MSG_PGALRENA,PARAM_PGA, "PGA %d already enabled" },
|
||||||
|
{ SEVERITY_INFO, MSG_PGALRDIS,PARAM_PGA, "PGA %d already disabled" },
|
||||||
|
{ SEVERITY_INFO, MSG_PGAENA, PARAM_PGA, "PGA %d sent enable message" },
|
||||||
|
{ SEVERITY_INFO, MSG_PGADIS, PARAM_PGA, "PGA %d set disable flag" },
|
||||||
|
{ SEVERITY_ERR, MSG_PGAUNW, PARAM_PGA, "PGA %d is not flagged WELL, cannot enable" },
|
||||||
#endif
|
#endif
|
||||||
#ifdef WANT_CPUMINE
|
#ifdef WANT_CPUMINE
|
||||||
{ SEVERITY_ERR, MSG_CPUNON, PARAM_NONE, "No CPUs" },
|
{ SEVERITY_ERR, MSG_CPUNON, PARAM_NONE, "No CPUs" },
|
||||||
@ -955,6 +968,99 @@ static void pgadev(__maybe_unused SOCKETTYPE c, char *param, bool isjson)
|
|||||||
if (isjson)
|
if (isjson)
|
||||||
strcat(io_buffer, JSON_CLOSE);
|
strcat(io_buffer, JSON_CLOSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void pgaenable(__maybe_unused SOCKETTYPE c, char *param, bool isjson)
|
||||||
|
{
|
||||||
|
int numpga = numpgas();
|
||||||
|
struct thr_info *thr;
|
||||||
|
int pga;
|
||||||
|
int id;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (numpga == 0) {
|
||||||
|
strcpy(io_buffer, message(MSG_PGANON, 0, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (param == NULL || *param == '\0') {
|
||||||
|
strcpy(io_buffer, message(MSG_MISID, 0, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
id = atoi(param);
|
||||||
|
if (id < 0 || id >= numpga) {
|
||||||
|
strcpy(io_buffer, message(MSG_INVPGA, id, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dev = pgadevice(id);
|
||||||
|
if (dev < 0) { // Should never happen
|
||||||
|
strcpy(io_buffer, message(MSG_INVPGA, id, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct cgpu_info *cgpu = devices[dev];
|
||||||
|
|
||||||
|
if (cgpu->deven != DEV_DISABLED) {
|
||||||
|
strcpy(io_buffer, message(MSG_PGALRENA, id, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cgpu->status != LIFE_WELL) {
|
||||||
|
strcpy(io_buffer, message(MSG_PGAUNW, id, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < mining_threads; i++) {
|
||||||
|
pga = thr_info[i].cgpu->device_id;
|
||||||
|
if (pga == dev) {
|
||||||
|
thr = &thr_info[i];
|
||||||
|
cgpu->deven = DEV_ENABLED;
|
||||||
|
tq_push(thr->q, &ping);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(io_buffer, message(MSG_PGAENA, id, NULL, isjson));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void pgadisable(__maybe_unused SOCKETTYPE c, char *param, bool isjson)
|
||||||
|
{
|
||||||
|
int numpga = numpgas();
|
||||||
|
int id;
|
||||||
|
|
||||||
|
if (numpga == 0) {
|
||||||
|
strcpy(io_buffer, message(MSG_PGANON, 0, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (param == NULL || *param == '\0') {
|
||||||
|
strcpy(io_buffer, message(MSG_MISID, 0, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
id = atoi(param);
|
||||||
|
if (id < 0 || id >= numpga) {
|
||||||
|
strcpy(io_buffer, message(MSG_INVPGA, id, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dev = pgadevice(id);
|
||||||
|
if (dev < 0) { // Should never happen
|
||||||
|
strcpy(io_buffer, message(MSG_INVPGA, id, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct cgpu_info *cgpu = devices[dev];
|
||||||
|
|
||||||
|
if (cgpu->deven == DEV_DISABLED) {
|
||||||
|
strcpy(io_buffer, message(MSG_PGALRDIS, id, NULL, isjson));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
cgpu->deven = DEV_DISABLED;
|
||||||
|
|
||||||
|
strcpy(io_buffer, message(MSG_PGADIS, id, NULL, isjson));
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WANT_CPUMINE
|
#ifdef WANT_CPUMINE
|
||||||
@ -1720,6 +1826,8 @@ struct CMDS {
|
|||||||
{ "gpu", gpudev, false },
|
{ "gpu", gpudev, false },
|
||||||
#if defined(USE_BITFORCE) || defined(USE_ICARUS)
|
#if defined(USE_BITFORCE) || defined(USE_ICARUS)
|
||||||
{ "pga", pgadev, false },
|
{ "pga", pgadev, false },
|
||||||
|
{ "pgaenable", pgaenable, true },
|
||||||
|
{ "pgadisable", pgadisable, true },
|
||||||
#endif
|
#endif
|
||||||
#ifdef WANT_CPUMINE
|
#ifdef WANT_CPUMINE
|
||||||
{ "cpu", cpudev, false },
|
{ "cpu", cpudev, false },
|
||||||
|
27
cgminer.c
27
cgminer.c
@ -221,6 +221,7 @@ static int include_count = 0;
|
|||||||
|
|
||||||
#if defined(unix)
|
#if defined(unix)
|
||||||
static char *opt_stderr_cmd = NULL;
|
static char *opt_stderr_cmd = NULL;
|
||||||
|
static int forkpid = 0;
|
||||||
#endif // defined(unix)
|
#endif // defined(unix)
|
||||||
|
|
||||||
bool ping = true;
|
bool ping = true;
|
||||||
@ -4121,6 +4122,13 @@ void quit(int status, const char *format, ...)
|
|||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
|
|
||||||
|
#if defined(unix)
|
||||||
|
if (forkpid > 0) {
|
||||||
|
kill(forkpid, SIGTERM);
|
||||||
|
forkpid = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
exit(status);
|
exit(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4265,14 +4273,14 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fork a child process
|
// Fork a child process
|
||||||
r = fork();
|
forkpid = fork();
|
||||||
if (r<0) {
|
if (forkpid<0) {
|
||||||
perror("fork - failed to fork child process for --monitor");
|
perror("fork - failed to fork child process for --monitor");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Child: launch monitor command
|
// Child: launch monitor command
|
||||||
if (0==r) {
|
if (0==forkpid) {
|
||||||
// Make stdin read end of pipe
|
// Make stdin read end of pipe
|
||||||
r = dup2(pfd[0], 0);
|
r = dup2(pfd[0], 0);
|
||||||
if (r<0) {
|
if (r<0) {
|
||||||
@ -4458,6 +4466,9 @@ int main (int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_CURSES
|
#ifdef HAVE_CURSES
|
||||||
|
if (opt_realquiet || devices_enabled == -1)
|
||||||
|
use_curses = false;
|
||||||
|
|
||||||
if (use_curses)
|
if (use_curses)
|
||||||
enable_curses();
|
enable_curses();
|
||||||
#endif
|
#endif
|
||||||
@ -4566,9 +4577,6 @@ int main (int argc, char *argv[])
|
|||||||
|
|
||||||
#ifdef HAVE_CURSES
|
#ifdef HAVE_CURSES
|
||||||
check_winsizes();
|
check_winsizes();
|
||||||
|
|
||||||
if (opt_realquiet)
|
|
||||||
use_curses = false;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!total_pools) {
|
if (!total_pools) {
|
||||||
@ -4839,5 +4847,12 @@ begin_bench:
|
|||||||
free(block);
|
free(block);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(unix)
|
||||||
|
if (forkpid > 0) {
|
||||||
|
kill(forkpid, SIGTERM);
|
||||||
|
forkpid = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
2
miner.h
2
miner.h
@ -507,7 +507,7 @@ extern int add_pool_details(bool live, char *url, char *user, char *pass);
|
|||||||
#define ADD_POOL_OK 0
|
#define ADD_POOL_OK 0
|
||||||
|
|
||||||
#define MAX_GPUDEVICES 16
|
#define MAX_GPUDEVICES 16
|
||||||
#define MAX_DEVICES 32
|
#define MAX_DEVICES 64
|
||||||
#define MAX_POOLS (32)
|
#define MAX_POOLS (32)
|
||||||
|
|
||||||
#define MIN_INTENSITY -10
|
#define MIN_INTENSITY -10
|
||||||
|
Loading…
x
Reference in New Issue
Block a user