mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-30 16:34:23 +00:00
commit
500ed85bb3
12
adl.c
12
adl.c
@ -33,6 +33,10 @@
|
|||||||
#endif
|
#endif
|
||||||
#include "adl_functions.h"
|
#include "adl_functions.h"
|
||||||
|
|
||||||
|
#ifndef HAVE_CURSES
|
||||||
|
#define wlogprint(...) applog(LOG_WARNING, __VA_ARGS__)
|
||||||
|
#endif
|
||||||
|
|
||||||
bool adl_active;
|
bool adl_active;
|
||||||
bool opt_reorder = false;
|
bool opt_reorder = false;
|
||||||
|
|
||||||
@ -764,6 +768,7 @@ bool gpu_stats(int gpu, float *temp, int *engineclock, int *memclock, float *vdd
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_CURSES
|
||||||
static void get_enginerange(int gpu, int *imin, int *imax)
|
static void get_enginerange(int gpu, int *imin, int *imax)
|
||||||
{
|
{
|
||||||
struct gpu_adl *ga;
|
struct gpu_adl *ga;
|
||||||
@ -776,6 +781,7 @@ static void get_enginerange(int gpu, int *imin, int *imax)
|
|||||||
*imin = ga->lpOdParameters.sEngineClock.iMin / 100;
|
*imin = ga->lpOdParameters.sEngineClock.iMin / 100;
|
||||||
*imax = ga->lpOdParameters.sEngineClock.iMax / 100;
|
*imax = ga->lpOdParameters.sEngineClock.iMax / 100;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int set_engineclock(int gpu, int iEngineClock)
|
int set_engineclock(int gpu, int iEngineClock)
|
||||||
{
|
{
|
||||||
@ -824,6 +830,7 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_CURSES
|
||||||
static void get_memoryrange(int gpu, int *imin, int *imax)
|
static void get_memoryrange(int gpu, int *imin, int *imax)
|
||||||
{
|
{
|
||||||
struct gpu_adl *ga;
|
struct gpu_adl *ga;
|
||||||
@ -836,6 +843,7 @@ static void get_memoryrange(int gpu, int *imin, int *imax)
|
|||||||
*imin = ga->lpOdParameters.sMemoryClock.iMin / 100;
|
*imin = ga->lpOdParameters.sMemoryClock.iMin / 100;
|
||||||
*imax = ga->lpOdParameters.sMemoryClock.iMax / 100;
|
*imax = ga->lpOdParameters.sMemoryClock.iMax / 100;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int set_memoryclock(int gpu, int iMemoryClock)
|
int set_memoryclock(int gpu, int iMemoryClock)
|
||||||
{
|
{
|
||||||
@ -876,6 +884,7 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_CURSES
|
||||||
static void get_vddcrange(int gpu, float *imin, float *imax)
|
static void get_vddcrange(int gpu, float *imin, float *imax)
|
||||||
{
|
{
|
||||||
struct gpu_adl *ga;
|
struct gpu_adl *ga;
|
||||||
@ -889,7 +898,6 @@ static void get_vddcrange(int gpu, float *imin, float *imax)
|
|||||||
*imax = (float)ga->lpOdParameters.sVddc.iMax / 1000;
|
*imax = (float)ga->lpOdParameters.sVddc.iMax / 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_CURSES
|
|
||||||
static float curses_float(const char *query)
|
static float curses_float(const char *query)
|
||||||
{
|
{
|
||||||
float ret;
|
float ret;
|
||||||
@ -997,6 +1005,7 @@ int set_fanspeed(int gpu, int iFanSpeed)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_CURSES
|
||||||
static int set_powertune(int gpu, int iPercentage)
|
static int set_powertune(int gpu, int iPercentage)
|
||||||
{
|
{
|
||||||
struct gpu_adl *ga;
|
struct gpu_adl *ga;
|
||||||
@ -1018,6 +1027,7 @@ static int set_powertune(int gpu, int iPercentage)
|
|||||||
unlock_adl();
|
unlock_adl();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Returns whether the fanspeed is optimal already or not. The fan_window bool
|
/* Returns whether the fanspeed is optimal already or not. The fan_window bool
|
||||||
* tells us whether the current fanspeed is in the target range for fanspeeds.
|
* tells us whether the current fanspeed is in the target range for fanspeeds.
|
||||||
|
29
cgminer.c
29
cgminer.c
@ -87,7 +87,7 @@ static bool opt_benchmark;
|
|||||||
static bool have_longpoll;
|
static bool have_longpoll;
|
||||||
static bool want_per_device_stats;
|
static bool want_per_device_stats;
|
||||||
bool use_syslog;
|
bool use_syslog;
|
||||||
static bool opt_quiet;
|
bool opt_quiet;
|
||||||
static bool opt_realquiet;
|
static bool opt_realquiet;
|
||||||
bool opt_loginput;
|
bool opt_loginput;
|
||||||
const int opt_cutofftemp = 95;
|
const int opt_cutofftemp = 95;
|
||||||
@ -167,9 +167,7 @@ static int total_threads;
|
|||||||
static pthread_mutex_t hash_lock;
|
static pthread_mutex_t hash_lock;
|
||||||
static pthread_mutex_t qd_lock;
|
static pthread_mutex_t qd_lock;
|
||||||
static pthread_mutex_t *stgd_lock;
|
static pthread_mutex_t *stgd_lock;
|
||||||
#ifdef HAVE_CURSES
|
pthread_mutex_t console_lock;
|
||||||
static pthread_mutex_t curses_lock;
|
|
||||||
#endif
|
|
||||||
static pthread_mutex_t ch_lock;
|
static pthread_mutex_t ch_lock;
|
||||||
static pthread_rwlock_t blk_lock;
|
static pthread_rwlock_t blk_lock;
|
||||||
|
|
||||||
@ -205,10 +203,11 @@ enum pool_strategy pool_strategy = POOL_FAILOVER;
|
|||||||
int opt_rotate_period;
|
int opt_rotate_period;
|
||||||
static int total_urls, total_users, total_passes, total_userpasses;
|
static int total_urls, total_users, total_passes, total_userpasses;
|
||||||
|
|
||||||
|
static
|
||||||
#ifndef HAVE_CURSES
|
#ifndef HAVE_CURSES
|
||||||
const
|
const
|
||||||
#endif
|
#endif
|
||||||
static bool curses_active;
|
bool curses_active;
|
||||||
|
|
||||||
static char current_block[37];
|
static char current_block[37];
|
||||||
static char *current_hash;
|
static char *current_hash;
|
||||||
@ -1339,8 +1338,10 @@ double total_secs = 0.1;
|
|||||||
static char statusline[256];
|
static char statusline[256];
|
||||||
/* logstart is where the log window should start */
|
/* logstart is where the log window should start */
|
||||||
static int devcursor, logstart, logcursor;
|
static int devcursor, logstart, logcursor;
|
||||||
|
#ifdef HAVE_CURSES
|
||||||
/* statusy is where the status window goes up to in cases where it won't fit at startup */
|
/* statusy is where the status window goes up to in cases where it won't fit at startup */
|
||||||
static int statusy;
|
static int statusy;
|
||||||
|
#endif
|
||||||
#ifdef HAVE_OPENCL
|
#ifdef HAVE_OPENCL
|
||||||
struct cgpu_info gpus[MAX_GPUDEVICES]; /* Maximum number apparently possible */
|
struct cgpu_info gpus[MAX_GPUDEVICES]; /* Maximum number apparently possible */
|
||||||
#endif
|
#endif
|
||||||
@ -1349,12 +1350,12 @@ struct cgpu_info *cpus;
|
|||||||
#ifdef HAVE_CURSES
|
#ifdef HAVE_CURSES
|
||||||
static inline void unlock_curses(void)
|
static inline void unlock_curses(void)
|
||||||
{
|
{
|
||||||
mutex_unlock(&curses_lock);
|
mutex_unlock(&console_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void lock_curses(void)
|
static inline void lock_curses(void)
|
||||||
{
|
{
|
||||||
mutex_lock(&curses_lock);
|
mutex_lock(&console_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool curses_active_locked(void)
|
static bool curses_active_locked(void)
|
||||||
@ -1588,13 +1589,10 @@ void wlogprint(const char *f, ...)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CURSES
|
#ifdef HAVE_CURSES
|
||||||
void log_curses(int prio, const char *f, va_list ap)
|
bool log_curses_only(int prio, const char *f, va_list ap)
|
||||||
{
|
{
|
||||||
bool high_prio;
|
bool high_prio;
|
||||||
|
|
||||||
if (opt_quiet && prio != LOG_ERR)
|
|
||||||
return;
|
|
||||||
|
|
||||||
high_prio = (prio == LOG_WARNING || prio == LOG_ERR);
|
high_prio = (prio == LOG_WARNING || prio == LOG_ERR);
|
||||||
|
|
||||||
if (curses_active_locked()) {
|
if (curses_active_locked()) {
|
||||||
@ -1606,8 +1604,9 @@ void log_curses(int prio, const char *f, va_list ap)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
unlock_curses();
|
unlock_curses();
|
||||||
} else
|
return true;
|
||||||
vprintf(f, ap);
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void clear_logwin(void)
|
void clear_logwin(void)
|
||||||
@ -5126,9 +5125,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
mutex_init(&hash_lock);
|
mutex_init(&hash_lock);
|
||||||
mutex_init(&qd_lock);
|
mutex_init(&qd_lock);
|
||||||
#ifdef HAVE_CURSES
|
mutex_init(&console_lock);
|
||||||
mutex_init(&curses_lock);
|
|
||||||
#endif
|
|
||||||
mutex_init(&control_lock);
|
mutex_init(&control_lock);
|
||||||
mutex_init(&sharelog_lock);
|
mutex_init(&sharelog_lock);
|
||||||
mutex_init(&ch_lock);
|
mutex_init(&ch_lock);
|
||||||
|
@ -1322,16 +1322,17 @@ static bool opencl_thread_prepare(struct thr_info *thr)
|
|||||||
applog(LOG_INFO, "Init GPU thread %i GPU %i virtual GPU %i", i, gpu, virtual_gpu);
|
applog(LOG_INFO, "Init GPU thread %i GPU %i virtual GPU %i", i, gpu, virtual_gpu);
|
||||||
clStates[i] = initCl(virtual_gpu, name, sizeof(name));
|
clStates[i] = initCl(virtual_gpu, name, sizeof(name));
|
||||||
if (!clStates[i]) {
|
if (!clStates[i]) {
|
||||||
|
#ifdef HAVE_CURSES
|
||||||
if (use_curses)
|
if (use_curses)
|
||||||
enable_curses();
|
enable_curses();
|
||||||
|
#endif
|
||||||
applog(LOG_ERR, "Failed to init GPU thread %d, disabling device %d", i, gpu);
|
applog(LOG_ERR, "Failed to init GPU thread %d, disabling device %d", i, gpu);
|
||||||
if (!failmessage) {
|
if (!failmessage) {
|
||||||
char *buf;
|
|
||||||
|
|
||||||
applog(LOG_ERR, "Restarting the GPU from the menu will not fix this.");
|
applog(LOG_ERR, "Restarting the GPU from the menu will not fix this.");
|
||||||
applog(LOG_ERR, "Try restarting cgminer.");
|
applog(LOG_ERR, "Try restarting cgminer.");
|
||||||
failmessage = true;
|
failmessage = true;
|
||||||
#ifdef HAVE_CURSES
|
#ifdef HAVE_CURSES
|
||||||
|
char *buf;
|
||||||
if (use_curses) {
|
if (use_curses) {
|
||||||
buf = curses_input("Press enter to continue");
|
buf = curses_input("Press enter to continue");
|
||||||
if (buf)
|
if (buf)
|
||||||
|
62
logging.c
62
logging.c
@ -18,12 +18,15 @@ bool opt_log_output = false;
|
|||||||
/* per default priorities higher than LOG_NOTICE are logged */
|
/* per default priorities higher than LOG_NOTICE are logged */
|
||||||
int opt_log_level = LOG_NOTICE;
|
int opt_log_level = LOG_NOTICE;
|
||||||
|
|
||||||
static void my_log_curses(int prio, char *f, va_list ap)
|
static void my_log_curses(__maybe_unused int prio, char *f, va_list ap)
|
||||||
{
|
{
|
||||||
|
if (opt_quiet && prio != LOG_ERR)
|
||||||
|
return;
|
||||||
|
|
||||||
#ifdef HAVE_CURSES
|
#ifdef HAVE_CURSES
|
||||||
extern bool use_curses;
|
extern bool use_curses;
|
||||||
if (use_curses)
|
if (use_curses && log_curses_only(prio, f, ap))
|
||||||
log_curses(prio, f, ap);
|
;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
@ -31,57 +34,20 @@ static void my_log_curses(int prio, char *f, va_list ap)
|
|||||||
|
|
||||||
strcpy(f + len - 1, " \n");
|
strcpy(f + len - 1, " \n");
|
||||||
|
|
||||||
#ifdef HAVE_CURSES
|
mutex_lock(&console_lock);
|
||||||
log_curses(prio, f, ap);
|
|
||||||
#else
|
|
||||||
vprintf(f, ap);
|
vprintf(f, ap);
|
||||||
#endif
|
mutex_unlock(&console_lock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void log_generic(int prio, const char *fmt, va_list ap);
|
||||||
|
|
||||||
void vapplog(int prio, const char *fmt, va_list ap)
|
void vapplog(int prio, const char *fmt, va_list ap)
|
||||||
{
|
{
|
||||||
if (!opt_debug && prio == LOG_DEBUG)
|
if (!opt_debug && prio == LOG_DEBUG)
|
||||||
return;
|
return;
|
||||||
|
if (use_syslog || opt_log_output || prio <= LOG_NOTICE)
|
||||||
#ifdef HAVE_SYSLOG_H
|
log_generic(prio, fmt, ap);
|
||||||
if (use_syslog) {
|
|
||||||
vsyslog(prio, fmt, ap);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if (0) {}
|
|
||||||
#endif
|
|
||||||
else if (opt_log_output || prio <= LOG_NOTICE) {
|
|
||||||
char *f;
|
|
||||||
int len;
|
|
||||||
struct timeval tv = {0, 0};
|
|
||||||
struct tm *tm;
|
|
||||||
|
|
||||||
gettimeofday(&tv, NULL);
|
|
||||||
|
|
||||||
tm = localtime(&tv.tv_sec);
|
|
||||||
|
|
||||||
len = 40 + strlen(fmt) + 22;
|
|
||||||
f = alloca(len);
|
|
||||||
sprintf(f, " [%d-%02d-%02d %02d:%02d:%02d] %s\n",
|
|
||||||
tm->tm_year + 1900,
|
|
||||||
tm->tm_mon + 1,
|
|
||||||
tm->tm_mday,
|
|
||||||
tm->tm_hour,
|
|
||||||
tm->tm_min,
|
|
||||||
tm->tm_sec,
|
|
||||||
fmt);
|
|
||||||
/* Only output to stderr if it's not going to the screen as well */
|
|
||||||
if (!isatty(fileno((FILE *)stderr))) {
|
|
||||||
va_list apc;
|
|
||||||
|
|
||||||
va_copy(apc, ap);
|
|
||||||
vfprintf(stderr, f, apc); /* atomic write to stderr */
|
|
||||||
fflush(stderr);
|
|
||||||
}
|
|
||||||
|
|
||||||
my_log_curses(prio, f, ap);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void applog(int prio, const char *fmt, ...)
|
void applog(int prio, const char *fmt, ...)
|
||||||
@ -100,7 +66,7 @@ void applog(int prio, const char *fmt, ...)
|
|||||||
* generic log function used by priority specific ones
|
* generic log function used by priority specific ones
|
||||||
* equals vapplog() without additional priority checks
|
* equals vapplog() without additional priority checks
|
||||||
*/
|
*/
|
||||||
static void __maybe_unused log_generic(int prio, const char *fmt, va_list ap)
|
static void log_generic(int prio, const char *fmt, va_list ap)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SYSLOG_H
|
#ifdef HAVE_SYSLOG_H
|
||||||
if (use_syslog) {
|
if (use_syslog) {
|
||||||
@ -121,7 +87,7 @@ static void __maybe_unused log_generic(int prio, const char *fmt, va_list ap)
|
|||||||
|
|
||||||
len = 40 + strlen(fmt) + 22;
|
len = 40 + strlen(fmt) + 22;
|
||||||
f = alloca(len);
|
f = alloca(len);
|
||||||
sprintf(f, "[%d-%02d-%02d %02d:%02d:%02d] %s\n",
|
sprintf(f, " [%d-%02d-%02d %02d:%02d:%02d] %s\n",
|
||||||
tm->tm_year + 1900,
|
tm->tm_year + 1900,
|
||||||
tm->tm_mon + 1,
|
tm->tm_mon + 1,
|
||||||
tm->tm_mday,
|
tm->tm_mday,
|
||||||
|
5
miner.h
5
miner.h
@ -584,6 +584,8 @@ extern bool fulltest(const unsigned char *hash, const unsigned char *target);
|
|||||||
|
|
||||||
extern int opt_scantime;
|
extern int opt_scantime;
|
||||||
|
|
||||||
|
extern pthread_mutex_t console_lock;
|
||||||
|
|
||||||
extern pthread_mutex_t restart_lock;
|
extern pthread_mutex_t restart_lock;
|
||||||
extern pthread_cond_t restart_cond;
|
extern pthread_cond_t restart_cond;
|
||||||
|
|
||||||
@ -627,6 +629,7 @@ extern int opt_n_threads;
|
|||||||
extern int num_processors;
|
extern int num_processors;
|
||||||
extern int hw_errors;
|
extern int hw_errors;
|
||||||
extern bool use_syslog;
|
extern bool use_syslog;
|
||||||
|
extern bool opt_quiet;
|
||||||
extern struct thr_info *thr_info;
|
extern struct thr_info *thr_info;
|
||||||
extern struct cgpu_info gpus[MAX_GPUDEVICES];
|
extern struct cgpu_info gpus[MAX_GPUDEVICES];
|
||||||
extern int gpu_threads;
|
extern int gpu_threads;
|
||||||
@ -817,7 +820,7 @@ extern void switch_pools(struct pool *selected);
|
|||||||
extern void remove_pool(struct pool *pool);
|
extern void remove_pool(struct pool *pool);
|
||||||
extern void write_config(FILE *fcfg);
|
extern void write_config(FILE *fcfg);
|
||||||
extern void default_save_file(char *filename);
|
extern void default_save_file(char *filename);
|
||||||
extern void log_curses(int prio, const char *f, va_list ap);
|
extern bool log_curses_only(int prio, const char *f, va_list ap);
|
||||||
extern void clear_logwin(void);
|
extern void clear_logwin(void);
|
||||||
extern bool pool_tclear(struct pool *pool, bool *var);
|
extern bool pool_tclear(struct pool *pool, bool *var);
|
||||||
extern struct thread_q *tq_new(void);
|
extern struct thread_q *tq_new(void);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user