1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-01-30 08:24:26 +00:00

Bugfix: Use a mutex to control non-curses output

Without this, there is no guarantee writes won't overlap (and it happens quite a bit on Windows with the bitforce driver)
This commit is contained in:
Luke Dashjr 2012-07-23 20:22:01 +00:00
parent d98e561a0a
commit da4ff2bde1
3 changed files with 8 additions and 6 deletions

View File

@ -164,7 +164,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;
static pthread_mutex_t curses_lock; pthread_mutex_t console_lock;
static pthread_mutex_t ch_lock; static pthread_mutex_t ch_lock;
static pthread_rwlock_t blk_lock; static pthread_rwlock_t blk_lock;
@ -1323,12 +1323,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)
@ -5056,9 +5056,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);

View File

@ -34,7 +34,9 @@ static void my_log_curses(__maybe_unused int prio, char *f, va_list ap)
strcpy(f + len - 1, " \n"); strcpy(f + len - 1, " \n");
mutex_lock(&console_lock);
vprintf(f, ap); vprintf(f, ap);
mutex_unlock(&console_lock);
} }
} }

View File

@ -576,6 +576,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;