Browse Source

klondike store and report errorcount and noise

nfactor-troky
Kano 11 years ago
parent
commit
2dc54366f9
  1. 23
      driver-klondike.c

23
driver-klondike.c

@ -64,6 +64,7 @@ typedef struct klondike_status {
uint8_t errorcount; uint8_t errorcount;
uint16_t hashcount; uint16_t hashcount;
uint16_t maxcount; uint16_t maxcount;
uint8_t noise;
} WORKSTATUS; } WORKSTATUS;
typedef struct _worktask { typedef struct _worktask {
@ -109,6 +110,8 @@ struct klondike_info {
int nextreply; int nextreply;
int noncecount; int noncecount;
uint64_t hashcount; uint64_t hashcount;
uint64_t errorcount;
uint64_t noisecount;
}; };
IDENTITY KlondikeID; IDENTITY KlondikeID;
@ -341,6 +344,7 @@ static void *klondike_get_replies(void *userdata)
{ {
struct cgpu_info *klncgpu = (struct cgpu_info *)userdata; struct cgpu_info *klncgpu = (struct cgpu_info *)userdata;
struct klondike_info *klninfo = (struct klondike_info *)(klncgpu->device_data); struct klondike_info *klninfo = (struct klondike_info *)(klncgpu->device_data);
struct klondike_status *ks;
char *replybuf; char *replybuf;
int err, recd; int err, recd;
@ -364,8 +368,23 @@ static void *klondike_get_replies(void *userdata)
klninfo->nextreply = 0; klninfo->nextreply = 0;
replybuf[0] = replybuf[1]; replybuf[0] = replybuf[1];
if (replybuf[0] == '=') switch (replybuf[0]) {
case '=':
klondike_check_nonce(klncgpu, (WORKRESULT *)replybuf); klondike_check_nonce(klncgpu, (WORKRESULT *)replybuf);
break;
case 'S':
case 'W':
case 'A':
case 'E':
ks = (struct klondike_status *)(replybuf+1);
wr_lock(&(klninfo->stat_lock));
klninfo->errorcount += ks->errorcount;
klninfo->noisecount += ks->noise;
wr_unlock(&(klninfo->stat_lock));
break;
default:
break;
}
} }
} }
return NULL; return NULL;
@ -607,6 +626,8 @@ static struct api_data *klondike_api_stats(struct cgpu_info *klncgpu)
} }
root = api_add_uint64(root, "Hash Count", &(klninfo->hashcount), true); root = api_add_uint64(root, "Hash Count", &(klninfo->hashcount), true);
root = api_add_uint64(root, "Error Count", &(klninfo->errorcount), true);
root = api_add_uint64(root, "Noise Count", &(klninfo->noisecount), true);
rd_unlock(&(klninfo->stat_lock)); rd_unlock(&(klninfo->stat_lock));

Loading…
Cancel
Save