mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-30 00:14:26 +00:00
commit
500ed85bb3
12
adl.c
12
adl.c
@ -33,6 +33,10 @@
|
||||
#endif
|
||||
#include "adl_functions.h"
|
||||
|
||||
#ifndef HAVE_CURSES
|
||||
#define wlogprint(...) applog(LOG_WARNING, __VA_ARGS__)
|
||||
#endif
|
||||
|
||||
bool adl_active;
|
||||
bool opt_reorder = false;
|
||||
|
||||
@ -764,6 +768,7 @@ bool gpu_stats(int gpu, float *temp, int *engineclock, int *memclock, float *vdd
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef HAVE_CURSES
|
||||
static void get_enginerange(int gpu, int *imin, int *imax)
|
||||
{
|
||||
struct gpu_adl *ga;
|
||||
@ -776,6 +781,7 @@ static void get_enginerange(int gpu, int *imin, int *imax)
|
||||
*imin = ga->lpOdParameters.sEngineClock.iMin / 100;
|
||||
*imax = ga->lpOdParameters.sEngineClock.iMax / 100;
|
||||
}
|
||||
#endif
|
||||
|
||||
int set_engineclock(int gpu, int iEngineClock)
|
||||
{
|
||||
@ -824,6 +830,7 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef HAVE_CURSES
|
||||
static void get_memoryrange(int gpu, int *imin, int *imax)
|
||||
{
|
||||
struct gpu_adl *ga;
|
||||
@ -836,6 +843,7 @@ static void get_memoryrange(int gpu, int *imin, int *imax)
|
||||
*imin = ga->lpOdParameters.sMemoryClock.iMin / 100;
|
||||
*imax = ga->lpOdParameters.sMemoryClock.iMax / 100;
|
||||
}
|
||||
#endif
|
||||
|
||||
int set_memoryclock(int gpu, int iMemoryClock)
|
||||
{
|
||||
@ -876,6 +884,7 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef HAVE_CURSES
|
||||
static void get_vddcrange(int gpu, float *imin, float *imax)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
#ifdef HAVE_CURSES
|
||||
static float curses_float(const char *query)
|
||||
{
|
||||
float ret;
|
||||
@ -997,6 +1005,7 @@ int set_fanspeed(int gpu, int iFanSpeed)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef HAVE_CURSES
|
||||
static int set_powertune(int gpu, int iPercentage)
|
||||
{
|
||||
struct gpu_adl *ga;
|
||||
@ -1018,6 +1027,7 @@ static int set_powertune(int gpu, int iPercentage)
|
||||
unlock_adl();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* 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.
|
||||
|
29
cgminer.c
29
cgminer.c
@ -87,7 +87,7 @@ static bool opt_benchmark;
|
||||
static bool have_longpoll;
|
||||
static bool want_per_device_stats;
|
||||
bool use_syslog;
|
||||
static bool opt_quiet;
|
||||
bool opt_quiet;
|
||||
static bool opt_realquiet;
|
||||
bool opt_loginput;
|
||||
const int opt_cutofftemp = 95;
|
||||
@ -167,9 +167,7 @@ static int total_threads;
|
||||
static pthread_mutex_t hash_lock;
|
||||
static pthread_mutex_t qd_lock;
|
||||
static pthread_mutex_t *stgd_lock;
|
||||
#ifdef HAVE_CURSES
|
||||
static pthread_mutex_t curses_lock;
|
||||
#endif
|
||||
pthread_mutex_t console_lock;
|
||||
static pthread_mutex_t ch_lock;
|
||||
static pthread_rwlock_t blk_lock;
|
||||
|
||||
@ -205,10 +203,11 @@ enum pool_strategy pool_strategy = POOL_FAILOVER;
|
||||
int opt_rotate_period;
|
||||
static int total_urls, total_users, total_passes, total_userpasses;
|
||||
|
||||
static
|
||||
#ifndef HAVE_CURSES
|
||||
const
|
||||
#endif
|
||||
static bool curses_active;
|
||||
bool curses_active;
|
||||
|
||||
static char current_block[37];
|
||||
static char *current_hash;
|
||||
@ -1339,8 +1338,10 @@ double total_secs = 0.1;
|
||||
static char statusline[256];
|
||||
/* logstart is where the log window should start */
|
||||
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 */
|
||||
static int statusy;
|
||||
#endif
|
||||
#ifdef HAVE_OPENCL
|
||||
struct cgpu_info gpus[MAX_GPUDEVICES]; /* Maximum number apparently possible */
|
||||
#endif
|
||||
@ -1349,12 +1350,12 @@ struct cgpu_info *cpus;
|
||||
#ifdef HAVE_CURSES
|
||||
static inline void unlock_curses(void)
|
||||
{
|
||||
mutex_unlock(&curses_lock);
|
||||
mutex_unlock(&console_lock);
|
||||
}
|
||||
|
||||
static inline void lock_curses(void)
|
||||
{
|
||||
mutex_lock(&curses_lock);
|
||||
mutex_lock(&console_lock);
|
||||
}
|
||||
|
||||
static bool curses_active_locked(void)
|
||||
@ -1588,13 +1589,10 @@ void wlogprint(const char *f, ...)
|
||||
#endif
|
||||
|
||||
#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;
|
||||
|
||||
if (opt_quiet && prio != LOG_ERR)
|
||||
return;
|
||||
|
||||
high_prio = (prio == LOG_WARNING || prio == LOG_ERR);
|
||||
|
||||
if (curses_active_locked()) {
|
||||
@ -1606,8 +1604,9 @@ void log_curses(int prio, const char *f, va_list ap)
|
||||
}
|
||||
}
|
||||
unlock_curses();
|
||||
} else
|
||||
vprintf(f, ap);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void clear_logwin(void)
|
||||
@ -5126,9 +5125,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
mutex_init(&hash_lock);
|
||||
mutex_init(&qd_lock);
|
||||
#ifdef HAVE_CURSES
|
||||
mutex_init(&curses_lock);
|
||||
#endif
|
||||
mutex_init(&console_lock);
|
||||
mutex_init(&control_lock);
|
||||
mutex_init(&sharelog_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);
|
||||
clStates[i] = initCl(virtual_gpu, name, sizeof(name));
|
||||
if (!clStates[i]) {
|
||||
#ifdef HAVE_CURSES
|
||||
if (use_curses)
|
||||
enable_curses();
|
||||
#endif
|
||||
applog(LOG_ERR, "Failed to init GPU thread %d, disabling device %d", i, gpu);
|
||||
if (!failmessage) {
|
||||
char *buf;
|
||||
|
||||
applog(LOG_ERR, "Restarting the GPU from the menu will not fix this.");
|
||||
applog(LOG_ERR, "Try restarting cgminer.");
|
||||
failmessage = true;
|
||||
#ifdef HAVE_CURSES
|
||||
char *buf;
|
||||
if (use_curses) {
|
||||
buf = curses_input("Press enter to continue");
|
||||
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 */
|
||||
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
|
||||
extern bool use_curses;
|
||||
if (use_curses)
|
||||
log_curses(prio, f, ap);
|
||||
if (use_curses && log_curses_only(prio, f, ap))
|
||||
;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
@ -31,57 +34,20 @@ static void my_log_curses(int prio, char *f, va_list ap)
|
||||
|
||||
strcpy(f + len - 1, " \n");
|
||||
|
||||
#ifdef HAVE_CURSES
|
||||
log_curses(prio, f, ap);
|
||||
#else
|
||||
mutex_lock(&console_lock);
|
||||
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)
|
||||
{
|
||||
if (!opt_debug && prio == LOG_DEBUG)
|
||||
return;
|
||||
|
||||
#ifdef HAVE_SYSLOG_H
|
||||
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);
|
||||
}
|
||||
if (use_syslog || opt_log_output || prio <= LOG_NOTICE)
|
||||
log_generic(prio, fmt, ap);
|
||||
}
|
||||
|
||||
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
|
||||
* 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
|
||||
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;
|
||||
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_mon + 1,
|
||||
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 pthread_mutex_t console_lock;
|
||||
|
||||
extern pthread_mutex_t restart_lock;
|
||||
extern pthread_cond_t restart_cond;
|
||||
|
||||
@ -627,6 +629,7 @@ extern int opt_n_threads;
|
||||
extern int num_processors;
|
||||
extern int hw_errors;
|
||||
extern bool use_syslog;
|
||||
extern bool opt_quiet;
|
||||
extern struct thr_info *thr_info;
|
||||
extern struct cgpu_info gpus[MAX_GPUDEVICES];
|
||||
extern int gpu_threads;
|
||||
@ -817,7 +820,7 @@ extern void switch_pools(struct pool *selected);
|
||||
extern void remove_pool(struct pool *pool);
|
||||
extern void write_config(FILE *fcfg);
|
||||
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 bool pool_tclear(struct pool *pool, bool *var);
|
||||
extern struct thread_q *tq_new(void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user