Browse Source

select() on serial usb in avalon does not work properly with zero timeout.

Con Kolivas 13 years ago
parent
commit
af65870244
1 changed files with 6 additions and 6 deletions
  1. 6 6
      driver-avalon.c

+ 6 - 6
driver-avalon.c

@@ -212,13 +212,13 @@ static inline int avalon_gets(int fd, uint8_t *buf, struct thr_info *thr,
 		struct timeval timeout;
 		fd_set rd;
 
+		if (unlikely(thr->work_restart)) {
+			applog(LOG_DEBUG, "Avalon: Work restart");
+			return AVA_GETS_RESTART;
+		}
+
 		timeout.tv_sec = 0;
-		/* If we get a restart message, still check if there's
-		 * anything in the buffer waiting to be parsed */
-		if (unlikely(thr->work_restart || !first))
-			timeout.tv_usec = 0;
-		else
-			timeout.tv_usec = 100000;
+		timeout.tv_usec = 100000;
 
 		FD_ZERO(&rd);
 		FD_SET(fd, &rd);