Add an option to break out after successfully mining a number of accepted shares.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
diff --git a/main.c b/main.c
index 26fe078..897aca2 100644
--- a/main.c
+++ b/main.c
@@ -218,6 +218,7 @@ static bool use_curses = true;
static bool opt_submit_stale;
static bool opt_nogpu;
static bool opt_usecpu;
+static int opt_shares;
char *opt_kernel_path;
@@ -1149,6 +1150,9 @@ static struct opt_table opt_config_table[] = {
OPT_WITH_ARG("--scan-time|-s",
set_int_0_to_9999, opt_show_intval, &opt_scantime,
"Upper bound on time spent scanning current work, in seconds"),
+ OPT_WITH_ARG("--shares",
+ opt_set_intval, NULL, &opt_shares,
+ "Quit after mining N shares (default: unlimited)"),
OPT_WITHOUT_ARG("--submit-stale",
opt_set_bool, &opt_submit_stale,
"Submit shares even if they would normally be considered stale"),
@@ -1602,6 +1606,11 @@ static bool submit_upstream_work(const struct work *work)
applog(LOG_WARNING, "Accepted %.8s %sPU %d thread %d",
hexstr + 152, cgpu->is_gpu? "G" : "C", cgpu->cpu_gpu, thr_id);
}
+ if (opt_shares && total_accepted >= opt_shares) {
+ applog(LOG_WARNING, "Successfully mined %d accepted shares as requested and exiting.", opt_shares);
+ kill_work();
+ goto out;
+ }
} else {
cgpu->rejected++;
total_rejected++;
@@ -4297,6 +4306,9 @@ static void print_summary(void)
if (active_device(i))
log_print_status(i);
}
+
+ if (opt_shares)
+ applog(LOG_WARNING, "Mined %d accepted shares of %d requested\n", total_accepted, opt_shares);
fflush(stdout);
fflush(stderr);
}