Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Sep 2003 01:00:03 -0700 (PDT)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 37557 for review
Message-ID:  <200309050800.h85803l1002012@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=37557

Change 37557 by marcel@marcel_nfs on 2003/09/05 00:59:42

	Send a pattern that allows us to detect lost data or
	(god forbid) spontaneous data. 

Affected files ...

.. //depot/projects/uart/dev/uart/uarttest.c#3 edit

Differences ...

==== //depot/projects/uart/dev/uart/uarttest.c#3 (text+ko) ====

@@ -48,7 +48,7 @@
 
 int fd, how;
 
-char buffer[16384*4];
+u_char buffer[16384*4];
 
 static int
 getsig(const char *dev, size_t count, int oldsig)
@@ -85,6 +85,9 @@
 	ssize_t count, wc;
 	int sig;
 
+	for (count = 0; count < sizeof(buffer); count++)
+		buffer[count] = count;
+
 	count = 0;
 	errno = 0;
 	sig = 0;
@@ -103,9 +106,10 @@
 dce(void)
 {
 	ssize_t count, rc;
-	int sig;
+	int delta, diff, sig;
 
 	count = 0;
+	delta = 0;
 	errno = 0;
 	sig = 0;
 	while (count < sizeof(buffer)) {
@@ -113,11 +117,20 @@
 		rc = MIN(16, sizeof(buffer) - count);
 		rc = read(fd, buffer + count, rc);
 		if (rc > 0) {
-			count += rc;
+			while (rc--) {
+				diff = buffer[count] - (u_char)count - delta;
+				if (diff) {
+					printf("ERR: %u (%d): ", count, delta);
+					printf("lost %d bytes\n", diff);
+					delta += diff;
+				}
+				count++;
+			}
 			errno = 0;
 		} else {
-			printf("sleeping after %u bytes...\n", count);
-			sleep(1);
+			printf("sleeping after %u (%d) bytes...\n", count,
+			    delta);
+			sleep(2);
 		}
 	}
 
@@ -198,8 +211,8 @@
 		break;
 	}
 
+	sleep(2);
 	tcsetattr(fd, TCSADRAIN, &t0);
-	sleep(1);
 	close(fd);
 	return (EX_OK);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200309050800.h85803l1002012>