mirror of
https://github.com/GOSTSec/ccminer
synced 2025-01-31 00:44:15 +00:00
Handle a default config file (ccminer.conf)
This allow to "debug" easily in visual studio (without project changes) Prepare version 1.5.3, update README
This commit is contained in:
parent
bb71232f18
commit
5dd2534df9
@ -1,5 +1,5 @@
|
||||
|
||||
ccMiner release 1.5.2-tpruvot (24 Jan 2015) - "Happy new Year!"
|
||||
ccMiner release 1.5.3-tpruvot (11 Feb 2015) - "Default Config"
|
||||
---------------------------------------------------------------
|
||||
|
||||
***************************************************************
|
||||
@ -175,6 +175,11 @@ features.
|
||||
|
||||
>>> RELEASE HISTORY <<<
|
||||
|
||||
Feb. 11th 2015 v1.5.3
|
||||
Fix anime algo
|
||||
Allow a default config file in user or ccminer folder
|
||||
SM 2.1 windows binary (lyra2 and blake/blakecoin for the moment)
|
||||
|
||||
Jan. 24th 2015 v1.5.2
|
||||
Allow per device intensity, example: -i 20,19.5
|
||||
Add process CPU priority and affinity mask parameters
|
||||
|
19
ccminer.conf
Normal file
19
ccminer.conf
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"_comment1" : "Possible keys are the long options (ccminer --help)",
|
||||
"_comment2" : "todo: support /* comments */",
|
||||
|
||||
"algo" : "blake",
|
||||
"intensity": 19,
|
||||
|
||||
"api-bind": "127.0.0.1:4068",
|
||||
"statsavg": 20,
|
||||
|
||||
"quiet" : false,
|
||||
"debug" : false,
|
||||
"protocol" : false,
|
||||
"cpu-priority" : 3,
|
||||
|
||||
"url" : "stratum+tcp://stratum.eu.miners-pool.eu:8421",
|
||||
"user" : "ShGCAFrspnLDo414EzUyJm4k5Qr2Kkrmvh",
|
||||
"pass" : "x"
|
||||
}
|
43
ccminer.cpp
43
ccminer.cpp
@ -172,9 +172,9 @@ short device_map[MAX_GPUS] = { 0 };
|
||||
long device_sm[MAX_GPUS] = { 0 };
|
||||
uint32_t gpus_intensity[MAX_GPUS] = { 0 };
|
||||
char *rpc_user = NULL;
|
||||
static char *rpc_url;
|
||||
static char *rpc_userpass;
|
||||
static char *rpc_pass;
|
||||
static char *rpc_userpass = NULL;
|
||||
static char *rpc_url;
|
||||
static char *short_url = NULL;
|
||||
char *opt_cert;
|
||||
char *opt_proxy;
|
||||
@ -364,6 +364,7 @@ static inline void drop_policy(void) {
|
||||
sched_setscheduler(0, SCHED_BATCH, ¶m);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void affine_to_cpu_mask(int id, uint8_t mask) {
|
||||
cpu_set_t set;
|
||||
CPU_ZERO(&set);
|
||||
@ -1125,7 +1126,7 @@ static void *miner_thread(void *userdata)
|
||||
applog(LOG_DEBUG, "Thread %d priority %d (nice %d)",
|
||||
thr_id, opt_priority, prio);
|
||||
#endif
|
||||
int ret = setpriority(PRIO_PROCESS, 0, prio);
|
||||
setpriority(PRIO_PROCESS, 0, prio);
|
||||
if (opt_priority == 0) {
|
||||
drop_policy();
|
||||
}
|
||||
@ -1830,7 +1831,7 @@ static void parse_arg(int key, char *arg)
|
||||
if (v < 0 || v > 31)
|
||||
show_usage_and_exit(1);
|
||||
{
|
||||
int n = 0, adds = 0;
|
||||
int n = 0;
|
||||
int ngpus = cuda_num_devices();
|
||||
char * pch = strtok(arg,",");
|
||||
if (pch == NULL) {
|
||||
@ -1842,13 +1843,14 @@ static void parse_arg(int key, char *arg)
|
||||
d = atof(pch);
|
||||
v = (uint32_t) d;
|
||||
if (v > 7) { /* 0 = default */
|
||||
gpus_intensity[n] = (1 << v);
|
||||
if ((d - v) > 0.0) {
|
||||
adds = (uint32_t) floor((d - v) * (1 << (v-8))) * 256;
|
||||
gpus_intensity[n] += adds;
|
||||
int adds = (uint32_t)floor((d - v) * (1 << (v - 8))) * 256;
|
||||
gpus_intensity[n] = (1 << v) + adds;
|
||||
applog(LOG_INFO, "Adding %u threads to intensity %u, %u cuda threads",
|
||||
adds, v, gpus_intensity[n]);
|
||||
} else {
|
||||
}
|
||||
else if (gpus_intensity[n] != (1 << v)) {
|
||||
gpus_intensity[n] = (1 << v);
|
||||
applog(LOG_INFO, "Intensity set to %u, %u cuda threads",
|
||||
v, gpus_intensity[n]);
|
||||
}
|
||||
@ -1903,7 +1905,7 @@ static void parse_arg(int key, char *arg)
|
||||
break;
|
||||
case 't':
|
||||
v = atoi(arg);
|
||||
if (v < 1 || v > 9999) /* sanity check */
|
||||
if (v < 0 || v > 9999) /* sanity check */
|
||||
show_usage_and_exit(1);
|
||||
opt_n_threads = v;
|
||||
break;
|
||||
@ -2207,12 +2209,12 @@ int main(int argc, char *argv[])
|
||||
int i;
|
||||
|
||||
printf("*** ccminer " PACKAGE_VERSION " for nVidia GPUs by tpruvot@github ***\n");
|
||||
#ifdef WIN32
|
||||
printf("\tBuilt with VC++ 2013 and nVidia CUDA SDK 6.5\n\n");
|
||||
#ifdef _MSC_VER
|
||||
printf(" Built with VC++ 2013 and nVidia CUDA SDK 6.5\n\n");
|
||||
#else
|
||||
printf("\tBuilt with the nVidia CUDA SDK 6.5\n\n");
|
||||
printf(" Built with the nVidia CUDA SDK 6.5\n\n");
|
||||
#endif
|
||||
printf(" Based on pooler cpuminer 2.3.2\n");
|
||||
printf(" Originally based on pooler cpuminer,\n");
|
||||
printf(" CUDA support by Christian Buchner and Christian H.\n");
|
||||
printf(" Include some of djm34 additions and sp optimisations\n\n");
|
||||
|
||||
@ -2220,6 +2222,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
rpc_user = strdup("");
|
||||
rpc_pass = strdup("");
|
||||
rpc_url = strdup("");
|
||||
|
||||
pthread_mutex_init(&applog_lock, NULL);
|
||||
|
||||
@ -2252,7 +2255,19 @@ int main(int argc, char *argv[])
|
||||
/* parse command line */
|
||||
parse_cmdline(argc, argv);
|
||||
|
||||
if (!opt_benchmark && !rpc_url) {
|
||||
if (!opt_benchmark && !strlen(rpc_url)) {
|
||||
// try default config file (user then binary folder)
|
||||
char defconfig[MAX_PATH] = { 0 };
|
||||
get_defconfig_path(defconfig, MAX_PATH, argv[0]);
|
||||
if (strlen(defconfig)) {
|
||||
if (opt_debug)
|
||||
applog(LOG_DEBUG, "Using config %s", defconfig);
|
||||
parse_arg('c', defconfig);
|
||||
parse_cmdline(argc, argv);
|
||||
}
|
||||
}
|
||||
|
||||
if (!opt_benchmark && !strlen(rpc_url)) {
|
||||
fprintf(stderr, "%s: no URL supplied\n", argv[0]);
|
||||
show_usage_and_exit(1);
|
||||
}
|
||||
|
30
compat.h
30
compat.h
@ -42,9 +42,37 @@ static __inline int setpriority(int which, int who, int prio)
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define __func__ __FUNCTION__
|
||||
#define snprintf(...) _snprintf(__VA_ARGS__)
|
||||
#define strdup(...) _strdup(__VA_ARGS__)
|
||||
#define strncasecmp(x,y,z) _strnicmp(x,y,z)
|
||||
#define strcasecmp(x,y) _stricmp(x,y)
|
||||
typedef int ssize_t;
|
||||
|
||||
#include <stdlib.h>
|
||||
static __inline char * dirname(char *file) {
|
||||
char buffer[_MAX_PATH] = { 0 };
|
||||
char drive[_MAX_DRIVE];
|
||||
char dir[_MAX_DIR];
|
||||
char fname[_MAX_FNAME];
|
||||
char ext[_MAX_EXT];
|
||||
_splitpath_s(file, drive, _MAX_DRIVE, dir, _MAX_DIR, fname, _MAX_FNAME, ext, _MAX_EXT);
|
||||
sprintf(buffer, "%s%s", drive, dir);
|
||||
return strdup(buffer);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* WIN32 */
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# define __func__ __FUNCTION__
|
||||
# define __thread __declspec(thread)
|
||||
# define _ALIGN(x) __declspec(align(x))
|
||||
#else
|
||||
# define _ALIGN(x) __attribute__ ((aligned(x)))
|
||||
#endif
|
||||
|
||||
#ifndef WIN32
|
||||
#define MAX_PATH PATH_MAX
|
||||
#endif
|
||||
|
||||
#endif /* __COMPAT_H__ */
|
||||
|
@ -1,4 +1,4 @@
|
||||
AC_INIT([ccminer], [1.5-git])
|
||||
AC_INIT([ccminer], [1.5.3])
|
||||
|
||||
AC_PREREQ([2.59c])
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
@ -156,7 +156,7 @@
|
||||
#define PACKAGE_NAME "ccminer"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "ccminer 1.5-git"
|
||||
#define PACKAGE_STRING "ccminer 1.5.3"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "ccminer"
|
||||
@ -165,7 +165,7 @@
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "1.5-git"
|
||||
#define PACKAGE_VERSION "1.5.3"
|
||||
|
||||
/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
@ -188,7 +188,7 @@
|
||||
#define USE_XOP 1
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "1.5-git"
|
||||
#define VERSION "1.5.3"
|
||||
|
||||
/* Define curl_free() as free() if our version of curl lacks curl_free. */
|
||||
/* #undef curl_free */
|
||||
|
@ -1,18 +0,0 @@
|
||||
{
|
||||
"_comment" : "todo: support /* comments */",
|
||||
|
||||
"algo" : "blake",
|
||||
"intensity": 19,
|
||||
"diff": 0.5,
|
||||
|
||||
"api-bind": "0.0.0.0:4068",
|
||||
"statsavg": 20,
|
||||
|
||||
"quiet" : false,
|
||||
"debug" : false,
|
||||
"protocol": false,
|
||||
|
||||
"url" : "stratum+tcp://www.hashharder.com:9585",
|
||||
"user" : "NaEcVrdzoCWHUYXb7X8QoafoKS9UV69Yk4",
|
||||
"pass" : "ccminer"
|
||||
}
|
13
miner.h
13
miner.h
@ -14,12 +14,7 @@ extern "C" {
|
||||
#include <jansson.h>
|
||||
#include <curl/curl.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#define snprintf(...) _snprintf(__VA_ARGS__)
|
||||
#define strdup(x) _strdup(x)
|
||||
#define strncasecmp(x,y,z) _strnicmp(x,y,z)
|
||||
#define strcasecmp(x,y) _stricmp(x,y)
|
||||
typedef int ssize_t;
|
||||
#ifdef _MSC_VER
|
||||
#undef HAVE_ALLOCA_H
|
||||
#undef HAVE_SYSLOG_H
|
||||
#endif
|
||||
@ -69,11 +64,8 @@ typedef char * va_list;
|
||||
#endif
|
||||
|
||||
#if defined(__CUDA_ARCH__) && __CUDA_ARCH__ > 0
|
||||
# undef _ALIGN
|
||||
# define _ALIGN(x) __align__(x)
|
||||
#elif _MSC_VER
|
||||
# define _ALIGN(x) __declspec(align(x))
|
||||
#else
|
||||
# define _ALIGN(x) __attribute__ ((aligned(x)))
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYSLOG_H
|
||||
@ -526,6 +518,7 @@ extern uint32_t gpus_intensity[MAX_GPUS];
|
||||
#define CL_WHT "\x1B[01;37m" /* white */
|
||||
|
||||
extern void applog(int prio, const char *fmt, ...);
|
||||
void get_defconfig_path(char *out, size_t bufsize, char *argv0);
|
||||
extern json_t *json_rpc_call(CURL *curl, const char *url, const char *userpass,
|
||||
const char *rpc_req, bool, bool, int *);
|
||||
extern void cbin2hex(char *out, const char *in, size_t len);
|
||||
|
BIN
res/ccminer.rc
BIN
res/ccminer.rc
Binary file not shown.
28
util.cpp
28
util.cpp
@ -21,6 +21,7 @@
|
||||
#include <unistd.h>
|
||||
#include <jansson.h>
|
||||
#include <curl/curl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <time.h>
|
||||
#ifdef WIN32
|
||||
#include "compat/winansi.h"
|
||||
@ -145,6 +146,33 @@ void applog(int prio, const char *fmt, ...)
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
/* Get default config.json path (system specific) */
|
||||
void get_defconfig_path(char *out, size_t bufsize, char *argv0)
|
||||
{
|
||||
char *cmd = strdup(argv0);
|
||||
char *dir = dirname(cmd);
|
||||
const char *sep = strstr(dir, "\\") ? "\\" : "/";
|
||||
struct stat info;
|
||||
#ifdef WIN32
|
||||
snprintf(out, bufsize, "%s\\ccminer\\ccminer.conf\0", getenv("APPDATA"));
|
||||
#else
|
||||
snprintf(out, bufsize, "%s\\.ccminer\\ccminer.conf", getenv("HOME"));
|
||||
#endif
|
||||
if (dir && stat(out, &info) != 0) {
|
||||
// binary folder if not present in user folder
|
||||
snprintf(out, bufsize, "%s%sccminer.conf\0", dir, sep);
|
||||
}
|
||||
if (stat(out, &info) != 0) {
|
||||
out[0] = '\0';
|
||||
return;
|
||||
}
|
||||
out[bufsize - 1] = '\0';
|
||||
free(cmd);
|
||||
#ifdef WIN32
|
||||
if (dir) free(dir);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void databuf_free(struct data_buffer *db)
|
||||
{
|
||||
if (!db)
|
||||
|
Loading…
x
Reference in New Issue
Block a user