Commit Diff


commit - e33c70bc72fa4af9d2261ed6d864bd13b8af9be5
commit + 38c10d1abcab399ce3735ccf54672a5b6787165e
blob - c6dc5930b3f53cb925fd1ad304242ab0de49922c
blob + 0ba726a4db9fce68352e2f3abdeae12de9700386
--- include/thread.h
+++ include/thread.h
@@ -24,6 +24,14 @@ _Thread	*_threadwakeup(Rendez*);
 #define	yield		threadyield
 
 /*
+ * I am tired of making this mistake.
+ */
+#define	exits	do_not_call_exits_in_threaded_programs
+#define	_exits	do_not_call__exits_in_threaded_programs
+
+
+
+/*
  * signals
  */
 void		threadnotify(int(*f)(void*,char*), int);
blob - 0f0a1a6622eb96bebb3a84d07c054bb3b0ac338e
blob + cc4336b373b578984604234a4711f34ddb99c3ea
--- src/cmd/9p.c
+++ src/cmd/9p.c
@@ -19,7 +19,7 @@ usage(void)
 	fprint(2, "	stat name\n");
 //	fprint(2, "	ls name\n");
 	fprint(2, "without -a, name elem/path means /path on server unix!$ns/elem\n");
-	exits("usage");
+	threadexitsall("usage");
 }
 
 void xread(int, char**);
@@ -142,7 +142,7 @@ xread(int argc, char **argv)
 		write(1, buf, n);
 	if(n < 0)
 		sysfatal("read error: %r");
-	exits(0);	
+	threadexitsall(0);	
 }
 
 void
@@ -165,7 +165,7 @@ xreadfd(int argc, char **argv)
 		write(1, buf, n);
 	if(n < 0)
 		sysfatal("read error: %r");
-	exits(0);	
+	threadexitsall(0);	
 }
 
 void
@@ -196,7 +196,7 @@ xwrite(int argc, char **argv)
 	}
 	if(n < 0)
 		sysfatal("read error: %r");
-	exits(0);	
+	threadexitsall(0);	
 }
 
 void
@@ -220,7 +220,7 @@ xwritefd(int argc, char **argv)
 			sysfatal("write error: %r");
 	if(n < 0)
 		sysfatal("read error: %r");
-	exits(0);	
+	threadexitsall(0);	
 }
 
 void
@@ -245,5 +245,5 @@ xstat(int argc, char **argv)
 	fmtinstall('D', dirfmt);
 	fmtinstall('M', dirmodefmt);
 	print("%D\n", d);
-	exits(0);
+	threadexitsall(0);
 }
blob - 7ff30ef8aa6b57ca693394b50797cc3b49a0c336
blob + c15c1560455da4b426c228490727fd562811e510
--- src/cmd/9pserve.c
+++ src/cmd/9pserve.c
@@ -119,7 +119,7 @@ usage(void)
 {
 	fprint(2, "usage: 9pserve [-lv] address\n");
 	fprint(2, "\treads/writes 9P messages on stdin/stdout\n");
-	exits("usage");
+	threadexitsall("usage");
 }
 
 uchar vbuf[128];
blob - 257b87ba9d2d8bc393b63af3954326fce89fb2f2
blob + 31c9f28900c07d1b16f8bb8e0db3846139c5ba3f
--- src/cmd/9term/9term.c
+++ src/cmd/9term/9term.c
@@ -1064,7 +1064,7 @@ consread(void)
 		 */
 		s = setecho(sfd, 0);
 		if(write(rcfd, buf, n) < 0)
-			exits(0);
+			threadexitsall(0);
 		if(s)
 			setecho(sfd, s);
 	}
blob - 917aefc1e9c6a2eeaef686fb74daf95098612c98
blob + b969180c19ab2f429ce719805efe92e30e863bfa
--- src/cmd/acme/acme.c
+++ src/cmd/acme/acme.c
@@ -114,7 +114,7 @@ threadmain(int argc, char *argv[])
 	default:
 	Usage:
 		fprint(2, "usage: acme -a -c ncol -f fontname -F fixedwidthfontname -l loadfile -W winsize\n");
-		exits("usage");
+		threadexitsall("usage");
 	}ARGEND
 
 	fontnames[0] = estrdup(fontnames[0]);
@@ -147,12 +147,12 @@ threadmain(int argc, char *argv[])
 /*
 	if(geninitdraw(nil, derror, fontnames[0], "acme", nil, Refnone) < 0){
 		fprint(2, "acme: can't open display: %r\n");
-		exits("geninitdraw");
+		threadexitsall("geninitdraw");
 	}
 */
 	if(initdraw(derror, fontnames[0], "acme") < 0){
 		fprint(2, "acme: can't open display: %r\n");
-		exits("initdraw");
+		threadexitsall("initdraw");
 	}
 
 	d = display;
@@ -192,19 +192,19 @@ threadmain(int argc, char *argv[])
 	chansetname(cwarn, "cwarn");
 	if(cwait==nil || ccommand==nil || ckill==nil || cxfidalloc==nil || cxfidfree==nil || cerr==nil || cexit==nil || cwarn==nil){
 		fprint(2, "acme: can't create initial channels: %r\n");
-		exits("channels");
+		threadexitsall("channels");
 	}
 
 	mousectl = initmouse(nil, screen);
 	if(mousectl == nil){
 		fprint(2, "acme: can't initialize mouse: %r\n");
-		exits("mouse");
+		threadexitsall("mouse");
 	}
 	mouse = &mousectl->m;
 	keyboardctl = initkeyboard(nil);
 	if(keyboardctl == nil){
 		fprint(2, "acme: can't initialize keyboard: %r\n");
-		exits("keyboard");
+		threadexitsall("keyboard");
 	}
 	mainpid = getpid();
 	startplumbing();
blob - 456f663dca1bd4b083134ab912fb880649a80aaf
blob + 428cf90f397f529455c3e6a4be72b4634c156239
--- src/cmd/import.c
+++ src/cmd/import.c
@@ -33,7 +33,7 @@ void
 usage(void)
 {
 	fprint(2, "usage: %s [-df] [-s service] [-n remote-ns] [-p remote-prog] remote-system\n", argv0);
-	exits("usage");
+	threadexitsall("usage");
 }
 
 void
blob - 761310b9429dc648495523a5c0cb246c143060e2
blob + 8065e9abf8d4675d800fa678b12350ed94f43b42
--- src/cmd/vac/vac.c
+++ src/cmd/vac/vac.c
@@ -105,7 +105,7 @@ static void
 usage(void)
 {
 	fprint(2, "usage: %s [-amqsv] [-h host] [-d vacfile] [-b blocksize] [-i name] [-e exclude] [-f vacfile] file ... \n", argv0);
-	exits("usage");
+	threadexitsall("usage");
 }
 
 void
blob - bd36de8ed2e295711ade0ce305a4bbbf3b3ea050
blob + 51050345c0e144ef6d59749be1449198ba47fd21
--- src/cmd/vac/vacfs.c
+++ src/cmd/vac/vacfs.c
@@ -206,7 +206,7 @@ void
 usage(void)
 {
 	fprint(2, "usage: %s [-sd] [-h host] [-c ncache] [-m mountpoint] vacfile\n", argv0);
-	exits("usage");
+	threadexitsall("usage");
 }
 
 char*