[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

more diffs...



sleep() can also wake up because of signals:

Index: bios.c
@@ -219,7 +219,7 @@
 			h = dev-SERDEV;
 
 		if (h >= 0 && h < btty_max) {
-			if (!BCONSTAT(dev))
+			while (!BCONSTAT(dev))
 				sleep(IO_Q, (long)&bttys[h]);
 		} else if (dev > 0) {
 			unsigned long tick;

and i think we no longer need these...

Index: pipefs.c
@@ -620,7 +623,9 @@
 /* wake up any readers, and wait for them to gobble some data */
 			if (p->rsel) {
 				wakeselect(p->rsel);
+#if 0
 				p->rsel = 0;
+#endif
 			}
 			wake(IO_Q, (long)p);
 			sleep(IO_Q, (long)p);
@@ -657,7 +662,9 @@
 	/* is someone select()ing the other end of the pipe for reading? */
 			if (p->rsel) {
 				wakeselect(p->rsel);
+#if 0
 				p->rsel = 0;
+#endif
 			}
 			wake(IO_Q, (long)p);	/* readers may continue */
 DEBUG(("pipe_write: sleep on %lx", p));
@@ -669,7 +676,9 @@
 	if (bytes_written > 0) {
 		if (p->rsel) {
 			wakeselect(p->rsel);
+#if 0
 			p->rsel = 0;
+#endif
 		}
 		wake(IO_Q, (long)p);	/* maybe someone wants this data */
 	}
@@ -722,7 +731,9 @@
 	/* is someone select()ing the other end of the pipe for writing? */
 			if (p->wsel) {
 				wakeselect(p->wsel);
+#if 0
 				p->wsel = 0;
+#endif
 			}
 			wake(IO_Q, (long)p);	/* writers may continue */
 			sleep(IO_Q, (long)p);
@@ -731,7 +742,9 @@
 	if (bytes_read > 0) {
 		if (p->wsel) {
 			wakeselect(p->wsel);
+#if 0
 			p->wsel = 0;
+#endif
 		}
 		wake(IO_Q, (long)p);	/* wake writers */
 	}
-- 
J"urgen Lock / nox@jelal.north.de / UUCP: ..!uunet!unido!uniol!jelal!nox
								...ohne Gewehr
PGP public key fingerprint =  8A 18 58 54 03 7B FC 12  1F 8B 63 C7 19 27 CF DA