Browse Source

Merge pull request #271 from luke-jr/cg_logfixes

Logging bugfixes
nfactor-troky
Con Kolivas 13 years ago
parent
commit
500ed85bb3
  1. 12
      adl.c
  2. 29
      cgminer.c
  3. 5
      driver-opencl.c
  4. 62
      logging.c
  5. 5
      miner.h

12
adl.c

@ -33,6 +33,10 @@ @@ -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 @@ -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) @@ -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: @@ -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) @@ -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: @@ -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) @@ -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) @@ -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) @@ -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

@ -87,7 +87,7 @@ static bool opt_benchmark; @@ -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; @@ -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; @@ -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; @@ -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; @@ -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, ...) @@ -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) @@ -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[]) @@ -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);

5
driver-opencl.c

@ -1322,16 +1322,17 @@ static bool opencl_thread_prepare(struct thr_info *thr) @@ -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

@ -18,12 +18,15 @@ bool opt_log_output = false; @@ -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) @@ -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, ...) @@ -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) @@ -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

@ -584,6 +584,8 @@ extern bool fulltest(const unsigned char *hash, const unsigned char *target); @@ -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; @@ -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); @@ -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…
Cancel
Save