Browse Source

Merge commit 'f0fe80c' into bfgminer

Luke Dashjr 11 years ago
parent
commit
a88c3ee28e
2 changed files with 33 additions and 3 deletions
  1. 23 0
      logging.h
  2. 10 3
      util.c

+ 23 - 0
logging.h

@@ -43,6 +43,11 @@ extern bool want_per_device_stats;
 /* global log_level, messages with lower or equal prio are logged */
 /* global log_level, messages with lower or equal prio are logged */
 extern int opt_log_level;
 extern int opt_log_level;
 
 
+#define return_via(label, stmt)  do {  \
+	stmt;  \
+	goto label;  \
+} while (0)
+
 #define LOGBUFSIZ 0x1000
 #define LOGBUFSIZ 0x1000
 
 
 extern void _applog(int prio, const char *str);
 extern void _applog(int prio, const char *str);
@@ -70,6 +75,12 @@ extern void _applog(int prio, const char *str);
 	return rv;  \
 	return rv;  \
 } while (0)
 } while (0)
 
 
+#define return_via_applog(label, expr, prio, ...)  do {  \
+	applog(prio, __VA_ARGS__);  \
+	expr;  \
+	goto label;  \
+} while (0)
+
 #define appperror(prio, s)  do {  \
 #define appperror(prio, s)  do {  \
 	const char *_tmp43 = bfg_strerror(errno, BST_ERRNO);  \
 	const char *_tmp43 = bfg_strerror(errno, BST_ERRNO);  \
 	if (s && s[0])  \
 	if (s && s[0])  \
@@ -92,6 +103,12 @@ extern void _applog(int prio, const char *str);
 	return rv;  \
 	return rv;  \
 } while (0)
 } while (0)
 
 
+#define return_via_applogfailinfo(label, expr, prio, failed, fmt, ...)  do {  \
+	applogfailinfo(prio, failed, fmt, __VA_ARGS__);  \
+	expr;  \
+	goto label;  \
+} while (0)
+
 #define applogfail(prio, failed)  do {  \
 #define applogfail(prio, failed)  do {  \
 	applog(prio, "Failed to %s"IN_FMT_FFL,  \
 	applog(prio, "Failed to %s"IN_FMT_FFL,  \
 	       failed,  \
 	       failed,  \
@@ -103,6 +120,12 @@ extern void _applog(int prio, const char *str);
 	return rv;  \
 	return rv;  \
 } while (0)
 } while (0)
 
 
+#define return_via_applogfail(label, expr, prio, failed)  do {  \
+	applogfail(prio, failed);  \
+	expr;  \
+	goto label;  \
+} while (0)
+
 extern void _bfg_clean_up(bool);
 extern void _bfg_clean_up(bool);
 
 
 #define quit(status, fmt, ...) do { \
 #define quit(status, fmt, ...) do { \

+ 10 - 3
util.c

@@ -2937,15 +2937,22 @@ out:
 
 
 bool restart_stratum(struct pool *pool)
 bool restart_stratum(struct pool *pool)
 {
 {
+	bool ret = true;
+	
 	mutex_lock(&pool->pool_test_lock);
 	mutex_lock(&pool->pool_test_lock);
+	
 	if (pool->stratum_active)
 	if (pool->stratum_active)
 		suspend_stratum(pool);
 		suspend_stratum(pool);
+	
 	if (!initiate_stratum(pool))
 	if (!initiate_stratum(pool))
-		return false;
+		return_via(out, ret = false);
 	if (!auth_stratum(pool))
 	if (!auth_stratum(pool))
-		return false;
+		return_via(out, ret = false);
+	
+out:
 	mutex_unlock(&pool->pool_test_lock);
 	mutex_unlock(&pool->pool_test_lock);
-	return true;
+	
+	return ret;
 }
 }
 
 
 void dev_error_update(struct cgpu_info *dev, enum dev_reason reason)
 void dev_error_update(struct cgpu_info *dev, enum dev_reason reason)