From Ulrich.Windl@rz.uni-regensburg.de Sun Jun 16 03:32:26 1996
From: Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de>
Organization: Universitaet Regensburg, Klinikum
To: mills@copland.udel.edu
Date: Mon, 13 May 1996 10:17:37 +0200
Mime-Version: 1.0
Content-Type: Multipart/Mixed; boundary=Message-Boundary-17278
Subject: Fix for kernel.tar
Priority: normal
X-Mailer: Pegasus Mail for Windows (v2.23)


--Message-Boundary-17278
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body

Hello!

Here's a small patch for the hist.c from the kernel.tar. The program 
wasn't detecting time running backwards properly. What about also 
adding negative time steps the same way overflows are handled?

I'll add the patch uuencoded again.

Ulrich Windl

--- hist.c	1994/12/08 02:26:31	1.1
+++ hist.c	1996/05/12 15:26:31	1.2
@@ -1,10 +1,15 @@
 /*
+ * Despite of error messages (on stderr) this program prints a histogram
+ * with the elapsed time and occurrence count on stdout.
+ *
  * This program can be used to calibrate the clock reading jitter of 
a
  * particular CPU and operating system. It first tickles every element
  * of an array, in order to force pages into memory, then repeatedly 
calls
  * gettimeofday() and, finally, writes out the time values for later
  * analysis. From this you can determine the jitter and if the clock 
ever
  * runs backwards.
+ * Fixed by Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de> to detect
+ * time running backwards.
  */
 #include <sys/time.h>
 #include <stdio.h>
@@ -19,7 +24,7 @@
 void
 main()
 {
-	struct timeval ts, tr, tp;
+	struct timeval ts, tr;
 	struct timezone tzp;
 	int i, j, n;
 	long t, u, v, w, gtod[NBUF], ovfl[NSRT];
@@ -42,13 +47,16 @@
 	while (1) {
 		gettimeofday(&tr, &tzp);
 		u = tr.tv_sec * 1000000 + tr.tv_usec; 
-		if (u - v > NCNT)
+		if (u - v > NCNT)	/* sample time is over */
 			break;
 		w = u - t;
-		if (i <= 0) {
-			printf("error <= 0 %ld %d %d, %d %d\n", w, ts.tv_sec,
-			    ts.tv_usec, tr.tv_sec, tr.tv_usec);
+		if (w <= 0) {
+			fprintf(stderr, "error <= 0 %ld %d %d, %d %d\n", w,
+				ts.tv_sec, ts.tv_usec, tr.tv_sec, tr.tv_usec);
 		} else if (w > NBUF - 1) {
+			fprintf(stderr, "error > %ld %ld %d %d, %d %d\n",
+				(long) (NBUF - 1), w,
+				ts.tv_sec, ts.tv_usec, tr.tv_sec, tr.tv_usec);
 			ovfl[n] = w;
 			if (n < NSRT - 1)
 				n++;
@@ -64,7 +72,7 @@
 	 */
         for (i = 0; i < NBUF - 1; i++) {
                 if (gtod[i] > 0)
-			printf("%ld %ld\n", i, gtod[i]);
+			printf("%d %ld\n", i, gtod[i]);
 	}
 	qsort((char *)ovfl, (int)n, sizeof(long), col);
 	w = 0;
@@ -72,17 +80,18 @@
 	for (i = 0; i < n; i++) {
 		if (ovfl[i] != w) {
 			if (j > 0)
-				printf("%ld %ld\n", w, j);
+				printf("%ld %d\n", w, j);
 			w = ovfl[i];
 			j = 1;
 		} else
 			j++;
 	}
 	if (j > 0)
-		printf("%ld %ld\n", w, j);
+		printf("%ld %d\n", w, j);
  
 }
 
+/* compare function for qsort() */
 int
 col(x, y)
 	long *x, *y;
--Message-Boundary-17278
Content-type: text/plain; charset=US-ASCII
Content-description: Information about this message.

This message contains a file prepared for transmission using the
MIME BASE64 transfer encoding scheme. If you are using Pegasus
Mail or another MIME-compliant system, you should be able to extract
it from within your mailer. If you cannot, please ask your system
administrator for help.

   ---- File information -----------
     File:  hist~1.c-p
     Date:  12 May 1996, 16:58
     Size:  2167 bytes.
     Type:  Unknown

--Message-Boundary-17278
Content-type: Application/Octet-stream; name=hist~1.c-p; type=Unknown
Content-transfer-encoding: BASE64

LS0tIGhpc3QuYwkxOTk0LzEyLzA4IDAyOjI2OjMxCTEuMQorKysgaGlzdC5jCTE5OTYvMDUv
MTIgMTU6MjY6MzEJMS4yCkBAIC0xLDEwICsxLDE1IEBACiAvKgorICogRGVzcGl0ZSBvZiBl
cnJvciBtZXNzYWdlcyAob24gc3RkZXJyKSB0aGlzIHByb2dyYW0gcHJpbnRzIGEgaGlzdG9n
cmFtCisgKiB3aXRoIHRoZSBlbGFwc2VkIHRpbWUgYW5kIG9jY3VycmVuY2UgY291bnQgb24g
c3Rkb3V0LgorICoKICAqIFRoaXMgcHJvZ3JhbSBjYW4gYmUgdXNlZCB0byBjYWxpYnJhdGUg
dGhlIGNsb2NrIHJlYWRpbmcgaml0dGVyIG9mIGEKICAqIHBhcnRpY3VsYXIgQ1BVIGFuZCBv
cGVyYXRpbmcgc3lzdGVtLiBJdCBmaXJzdCB0aWNrbGVzIGV2ZXJ5IGVsZW1lbnQKICAqIG9m
IGFuIGFycmF5LCBpbiBvcmRlciB0byBmb3JjZSBwYWdlcyBpbnRvIG1lbW9yeSwgdGhlbiBy
ZXBlYXRlZGx5IGNhbGxzCiAgKiBnZXR0aW1lb2ZkYXkoKSBhbmQsIGZpbmFsbHksIHdyaXRl
cyBvdXQgdGhlIHRpbWUgdmFsdWVzIGZvciBsYXRlcgogICogYW5hbHlzaXMuIEZyb20gdGhp
cyB5b3UgY2FuIGRldGVybWluZSB0aGUgaml0dGVyIGFuZCBpZiB0aGUgY2xvY2sgZXZlcgog
ICogcnVucyBiYWNrd2FyZHMuCisgKiBGaXhlZCBieSBVbHJpY2ggV2luZGwgPFVscmljaC5X
aW5kbEByei51bmktcmVnZW5zYnVyZy5kZT4gdG8gZGV0ZWN0CisgKiB0aW1lIHJ1bm5pbmcg
YmFja3dhcmRzLgogICovCiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNpbmNsdWRlIDxzdGRp
by5oPgpAQCAtMTksNyArMjQsNyBAQAogdm9pZAogbWFpbigpCiB7Ci0Jc3RydWN0IHRpbWV2
YWwgdHMsIHRyLCB0cDsKKwlzdHJ1Y3QgdGltZXZhbCB0cywgdHI7CiAJc3RydWN0IHRpbWV6
b25lIHR6cDsKIAlpbnQgaSwgaiwgbjsKIAlsb25nIHQsIHUsIHYsIHcsIGd0b2RbTkJVRl0s
IG92ZmxbTlNSVF07CkBAIC00MiwxMyArNDcsMTYgQEAKIAl3aGlsZSAoMSkgewogCQlnZXR0
aW1lb2ZkYXkoJnRyLCAmdHpwKTsKIAkJdSA9IHRyLnR2X3NlYyAqIDEwMDAwMDAgKyB0ci50
dl91c2VjOyAKLQkJaWYgKHUgLSB2ID4gTkNOVCkKKwkJaWYgKHUgLSB2ID4gTkNOVCkJLyog
c2FtcGxlIHRpbWUgaXMgb3ZlciAqLwogCQkJYnJlYWs7CiAJCXcgPSB1IC0gdDsKLQkJaWYg
KGkgPD0gMCkgewotCQkJcHJpbnRmKCJlcnJvciA8PSAwICVsZCAlZCAlZCwgJWQgJWRcbiIs
IHcsIHRzLnR2X3NlYywKLQkJCSAgICB0cy50dl91c2VjLCB0ci50dl9zZWMsIHRyLnR2X3Vz
ZWMpOworCQlpZiAodyA8PSAwKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yIDw9IDAg
JWxkICVkICVkLCAlZCAlZFxuIiwgdywKKwkJCQl0cy50dl9zZWMsIHRzLnR2X3VzZWMsIHRy
LnR2X3NlYywgdHIudHZfdXNlYyk7CiAJCX0gZWxzZSBpZiAodyA+IE5CVUYgLSAxKSB7CisJ
CQlmcHJpbnRmKHN0ZGVyciwgImVycm9yID4gJWxkICVsZCAlZCAlZCwgJWQgJWRcbiIsCisJ
CQkJKGxvbmcpIChOQlVGIC0gMSksIHcsCisJCQkJdHMudHZfc2VjLCB0cy50dl91c2VjLCB0
ci50dl9zZWMsIHRyLnR2X3VzZWMpOwogCQkJb3ZmbFtuXSA9IHc7CiAJCQlpZiAobiA8IE5T
UlQgLSAxKQogCQkJCW4rKzsKQEAgLTY0LDcgKzcyLDcgQEAKIAkgKi8KICAgICAgICAgZm9y
IChpID0gMDsgaSA8IE5CVUYgLSAxOyBpKyspIHsKICAgICAgICAgICAgICAgICBpZiAoZ3Rv
ZFtpXSA+IDApCi0JCQlwcmludGYoIiVsZCAlbGRcbiIsIGksIGd0b2RbaV0pOworCQkJcHJp
bnRmKCIlZCAlbGRcbiIsIGksIGd0b2RbaV0pOwogCX0KIAlxc29ydCgoY2hhciAqKW92Zmws
IChpbnQpbiwgc2l6ZW9mKGxvbmcpLCBjb2wpOwogCXcgPSAwOwpAQCAtNzIsMTcgKzgwLDE4
IEBACiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogCQlpZiAob3ZmbFtpXSAhPSB3KSB7
CiAJCQlpZiAoaiA+IDApCi0JCQkJcHJpbnRmKCIlbGQgJWxkXG4iLCB3LCBqKTsKKwkJCQlw
cmludGYoIiVsZCAlZFxuIiwgdywgaik7CiAJCQl3ID0gb3ZmbFtpXTsKIAkJCWogPSAxOwog
CQl9IGVsc2UKIAkJCWorKzsKIAl9CiAJaWYgKGogPiAwKQotCQlwcmludGYoIiVsZCAlbGRc
biIsIHcsIGopOworCQlwcmludGYoIiVsZCAlZFxuIiwgdywgaik7CiAgCiB9CiAKKy8qIGNv
bXBhcmUgZnVuY3Rpb24gZm9yIHFzb3J0KCkgKi8KIGludAogY29sKHgsIHkpCiAJbG9uZyAq
eCwgKnk7Cg==

--Message-Boundary-17278--

