Browse Source

cpu: Support for per-work mining algorithms

Luke Dashjr 11 years ago
parent
commit
d046e9d728
2 changed files with 10 additions and 22 deletions
  1. 10 15
      driver-cpu.c
  2. 0 7
      miner.c

+ 10 - 15
driver-cpu.c

@@ -665,14 +665,10 @@ static enum sha256_algos pick_fastest_algo()
 	return best_algo;
 }
 
-/* FIXME: Use asprintf for better errors. */
 char *set_algo(const char *arg, enum sha256_algos *algo)
 {
 	enum sha256_algos i;
 
-	if (opt_scrypt)
-		return "Can only use scrypt algorithm";
-
 	for (i = 0; i < ARRAY_SIZE(algo_names); i++) {
 		if (algo_names[i] && !strcmp(arg, algo_names[i])) {
 			*algo = i;
@@ -682,13 +678,6 @@ char *set_algo(const char *arg, enum sha256_algos *algo)
 	return "Unknown algorithm";
 }
 
-#ifdef WANT_SCRYPT
-void set_scrypt_algo(enum sha256_algos *algo)
-{
-	*algo = ALGO_SCRYPT;
-}
-#endif
-
 void show_algo(char buf[OPT_SHOW_LEN], const enum sha256_algos *algo)
 {
 	strncpy(buf, algo_names[*algo], OPT_SHOW_LEN);
@@ -831,7 +820,16 @@ CPUSearch:
 
 	/* scan nonces for a proof-of-work hash */
 	{
-		sha256_func func = sha256_funcs[opt_algo];
+		sha256_func func;
+		switch (work_mining_algorithm(work)->algo)
+		{
+			case POW_SCRYPT:
+				func = scanhash_scrypt;
+				break;
+			case POW_SHA256D:
+				func = sha256_funcs[opt_algo];
+				break;
+		}
 		rc = (*func)(
 			thr,
 			work->midstate,
@@ -872,6 +870,3 @@ struct device_drv cpu_drv = {
 	.scanhash = cpu_scanhash,
 };
 #endif
-
-
-

+ 0 - 7
miner.c

@@ -13083,13 +13083,6 @@ int main(int argc, char *argv[])
 	if (want_per_device_stats)
 		opt_log_output = true;
 
-#ifdef WANT_CPUMINE
-#ifdef USE_SCRYPT
-	if (opt_scrypt)
-		set_scrypt_algo(&opt_algo);
-#endif
-#endif
-
 	bfg_devapi_init();
 	drv_detect_all();
 	total_devices = total_devices_new;