Browse Source

Get rid of the flaky time_lock and use the thread safe localtime_r instead.

nfactor-troky
Con Kolivas 13 years ago
parent
commit
43ef5f5d3f
  1. 3
      main.c
  2. 1
      miner.h
  3. 7
      util.c

3
main.c

@ -153,7 +153,6 @@ static int work_thr_id;
int longpoll_thr_id; int longpoll_thr_id;
static int stage_thr_id; static int stage_thr_id;
struct work_restart *work_restart = NULL; struct work_restart *work_restart = NULL;
pthread_mutex_t time_lock;
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;
@ -1740,8 +1739,6 @@ int main (int argc, char *argv[])
unsigned int i, j = 0; unsigned int i, j = 0;
char name[32]; char name[32];
if (unlikely(pthread_mutex_init(&time_lock, NULL)))
return 1;
if (unlikely(pthread_mutex_init(&hash_lock, NULL))) if (unlikely(pthread_mutex_init(&hash_lock, NULL)))
return 1; return 1;
if (unlikely(pthread_mutex_init(&qd_lock, NULL))) if (unlikely(pthread_mutex_init(&qd_lock, NULL)))

1
miner.h

@ -226,7 +226,6 @@ struct work_restart {
char padding[128 - sizeof(unsigned long)]; char padding[128 - sizeof(unsigned long)];
}; };
extern pthread_mutex_t time_lock;
extern int hw_errors; extern int hw_errors;
extern bool use_syslog; extern bool use_syslog;
extern struct thr_info *thr_info; extern struct thr_info *thr_info;

7
util.c

@ -71,14 +71,11 @@ void vapplog(int prio, const char *fmt, va_list ap)
char *f; char *f;
int len; int len;
struct timeval tv = { }; struct timeval tv = { };
struct tm tm, *tm_p; struct tm tm;
gettimeofday(&tv, NULL); gettimeofday(&tv, NULL);
pthread_mutex_lock(&time_lock); localtime_r(&tv.tv_sec, &tm);
tm_p = localtime(&tv.tv_sec);
memcpy(&tm, tm_p, sizeof(tm));
pthread_mutex_unlock(&time_lock);
len = 40 + strlen(fmt) + 2; len = 40 + strlen(fmt) + 2;
f = alloca(len); f = alloca(len);

Loading…
Cancel
Save