From 5d1a45294b4dcc1ca7e1e2c1243ee4904f0f53fe Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Thu, 25 Nov 2010 04:04:30 -0500 Subject: [PATCH] code movement: move submit_work() above hot path --- cpu-miner.c | 84 ++++++++++++++++++++++++++--------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/cpu-miner.c b/cpu-miner.c index 2c8149ef..2b404afc 100644 --- a/cpu-miner.c +++ b/cpu-miner.c @@ -134,6 +134,48 @@ err_out: return false; } +static void submit_work(struct work *work) +{ + char *hexstr = NULL, *s = NULL; + json_t *val, *res; + + printf("PROOF OF WORK FOUND? submitting...\n"); + + /* build hex string */ + hexstr = bin2hex(work->data, sizeof(work->data)); + if (!hexstr) + goto out; + + /* build JSON-RPC request */ + if (asprintf(&s, + "{\"method\": \"getwork\", \"params\": [ \"%s\" ], \"id\":1}\r\n", + hexstr) < 0) { + fprintf(stderr, "asprintf failed\n"); + goto out; + } + + if (opt_debug) + fprintf(stderr, "DBG: sending RPC call:\n%s", s); + + /* issue JSON-RPC request */ + val = json_rpc_call(rpc_url, userpass, s); + if (!val) { + fprintf(stderr, "submit_work json_rpc_call failed\n"); + goto out; + } + + res = json_object_get(val, "result"); + + printf("PROOF OF WORK RESULT: %s\n", + json_is_true(res) ? "true (yay!!!)" : "false (booooo)"); + + json_decref(val); + +out: + free(s); + free(hexstr); +} + static void inc_stats(uint64_t n_hashes) { pthread_mutex_lock(&stats_mutex); @@ -198,48 +240,6 @@ static bool scanhash(unsigned char *midstate, unsigned char *data, } } -static void submit_work(struct work *work) -{ - char *hexstr = NULL, *s = NULL; - json_t *val, *res; - - printf("PROOF OF WORK FOUND? submitting...\n"); - - /* build hex string */ - hexstr = bin2hex(work->data, sizeof(work->data)); - if (!hexstr) - goto out; - - /* build JSON-RPC request */ - if (asprintf(&s, - "{\"method\": \"getwork\", \"params\": [ \"%s\" ], \"id\":1}\r\n", - hexstr) < 0) { - fprintf(stderr, "asprintf failed\n"); - goto out; - } - - if (opt_debug) - fprintf(stderr, "DBG: sending RPC call:\n%s", s); - - /* issue JSON-RPC request */ - val = json_rpc_call(rpc_url, userpass, s); - if (!val) { - fprintf(stderr, "submit_work json_rpc_call failed\n"); - goto out; - } - - res = json_object_get(val, "result"); - - printf("PROOF OF WORK RESULT: %s\n", - json_is_true(res) ? "true (yay!!!)" : "false (booooo)"); - - json_decref(val); - -out: - free(s); - free(hexstr); -} - static void *miner_thread(void *dummy) { static const char *rpc_req =