Browse Source

Plan 9 from Bell Labs 2005-09-07

David du Colombier 18 years ago
parent
commit
f69580fa7d
4 changed files with 51 additions and 20 deletions
  1. 10 9
      dist/replica/_plan9.db
  2. 8 8
      dist/replica/plan9.db
  3. 9 0
      dist/replica/plan9.log
  4. 24 3
      sys/src/cmd/ramfs.c

+ 10 - 9
dist/replica/_plan9.db

@@ -4,13 +4,13 @@
 386/9loadlite - 775 sys sys 1112757508 135244
 386/9loadlitedebug - 775 sys sys 1121398844 198794
 386/9pc - 775 sys sys 1125835513 1838424
-386/9pc.gz - 664 sys sys 1112757510 643423
+386/9pc.gz - 664 sys sys 1126005796 645747
 386/9pccpu - 775 sys sys 1125835516 1492680
-386/9pccpu.gz - 664 sys sys 1112757511 529529
+386/9pccpu.gz - 664 sys sys 1126005799 530959
 386/9pcdisk - 775 sys sys 1125835520 2044222
-386/9pcdisk.gz - 664 sys sys 1112757513 733576
+386/9pcdisk.gz - 664 sys sys 1126005804 736406
 386/9pcf - 775 sys sys 1125835525 2387046
-386/9pcf.gz - 664 sys sys 1112757515 886966
+386/9pcf.gz - 664 sys sys 1126005809 888685
 386/9pxeload - 775 sys sys 1112757508 215872
 386/_9pcdisk.gz - 664 sys sys 1039764191 695837
 386/bin - 20000000775 sys sys 1018897690 0
@@ -366,7 +366,7 @@
 386/bin/proof - 775 sys sys 1125346007 178401
 386/bin/ps - 775 sys sys 1125346007 67985
 386/bin/pwd - 775 sys sys 1115950105 36897
-386/bin/ramfs - 775 sys sys 1115950105 89167
+386/bin/ramfs - 775 sys sys 1126005943 89803
 386/bin/rc - 775 sys sys 1119496655 143226
 386/bin/rdbfs - 775 sys sys 1125346008 168500
 386/bin/read - 775 sys sys 1115950106 58046
@@ -12666,7 +12666,7 @@ sys/src/cmd/ql/optab.c - 664 sys sys 1089299167 13392
 sys/src/cmd/ql/pass.c - 664 sys sys 1089299168 11868
 sys/src/cmd/ql/sched.c - 664 sys sys 1089299166 12776
 sys/src/cmd/ql/span.c - 664 sys sys 1089299167 19882
-sys/src/cmd/ramfs.c - 664 sys sys 1109607491 15506
+sys/src/cmd/ramfs.c - 664 sys sys 1126005899 15927
 sys/src/cmd/ratfs - 20000000775 sys sys 1016943965 0
 sys/src/cmd/ratfs/ctlfiles.c - 664 sys sys 1016943964 6694
 sys/src/cmd/ratfs/main.c - 664 sys sys 1016943964 6516
@@ -12807,7 +12807,7 @@ sys/src/cmd/seq.c - 664 sys sys 1125529033 1683
 sys/src/cmd/sh.C - 664 sys sys 1055701754 10303
 sys/src/cmd/sha1sum.c - 664 sys sys 1014926229 1017
 sys/src/cmd/size.c - 664 sys sys 944961619 717
-sys/src/cmd/sleep.c - 664 sys sys 944961351 170
+sys/src/cmd/sleep.c - 664 sys sys 1126031186 170
 sys/src/cmd/snap - 20000000775 sys sys 951229639 0
 sys/src/cmd/snap/mkfile - 664 sys sys 1023834477 257
 sys/src/cmd/snap/read.c - 664 sys sys 1023834478 3512
@@ -13844,7 +13844,7 @@ sys/src/games/sokoban/README - 664 sys sys 1125919542 799
 sys/src/games/sokoban/animation.c - 664 sys sys 1125919541 973
 sys/src/games/sokoban/graphics.c - 664 sys sys 1095792097 1846
 sys/src/games/sokoban/level.c - 664 sys sys 1095792097 1654
-sys/src/games/sokoban/mkfile - 664 sys sys 1102439103 247
+sys/src/games/sokoban/mkfile - 664 sys sys 1125976294 261
 sys/src/games/sokoban/move.c - 664 sys sys 1095792097 2671
 sys/src/games/sokoban/route.c - 664 sys sys 1125919542 4486
 sys/src/games/sokoban/sokoban.c - 664 sys sys 1125919542 6358
@@ -14962,4 +14962,5 @@ usr/glenda/lib/profile - 664 glenda glenda 1105128663 890
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
-sys/src/games/sokoban/mkfile - 664 sys sys 1125976294 261
+386/bin/games/sokoban - 775 sys sys 1126062686 164713
+386/bin/ramfs - 775 sys sys 1126062687 89789

+ 8 - 8
dist/replica/plan9.db

@@ -4,13 +4,13 @@
 386/9loadlite - 775 sys sys 1112757508 135244
 386/9loadlitedebug - 775 sys sys 1121398844 198794
 386/9pc - 775 sys sys 1125835513 1838424
-386/9pc.gz - 664 sys sys 1112757510 643423
+386/9pc.gz - 664 sys sys 1126005796 645747
 386/9pccpu - 775 sys sys 1125835516 1492680
-386/9pccpu.gz - 664 sys sys 1112757511 529529
+386/9pccpu.gz - 664 sys sys 1126005799 530959
 386/9pcdisk - 775 sys sys 1125835520 2044222
-386/9pcdisk.gz - 664 sys sys 1112757513 733576
+386/9pcdisk.gz - 664 sys sys 1126005804 736406
 386/9pcf - 775 sys sys 1125835525 2387046
-386/9pcf.gz - 664 sys sys 1112757515 886966
+386/9pcf.gz - 664 sys sys 1126005809 888685
 386/9pxeload - 775 sys sys 1112757508 215872
 386/_9pcdisk.gz - 664 sys sys 1039764191 695837
 386/bin - 20000000775 sys sys 1018897690 0
@@ -254,7 +254,7 @@
 386/bin/games/mahjongg - 775 sys sys 1125345978 164288
 386/bin/games/memo - 775 sys sys 1125544173 156892
 386/bin/games/playlistfs - 775 sys sys 1105589129 148484
-386/bin/games/sokoban - 775 sys sys 1125345978 163379
+386/bin/games/sokoban - 775 sys sys 1126062686 164713
 386/bin/games/sudoku - 775 sys sys 1117249746 171666
 386/bin/getmap - 775 sys sys 1115950076 65180
 386/bin/gif - 775 sys sys 1125345979 158054
@@ -366,7 +366,7 @@
 386/bin/proof - 775 sys sys 1125346007 178401
 386/bin/ps - 775 sys sys 1125346007 67985
 386/bin/pwd - 775 sys sys 1115950105 36897
-386/bin/ramfs - 775 sys sys 1115950105 89167
+386/bin/ramfs - 775 sys sys 1126062687 89789
 386/bin/rc - 775 sys sys 1119496655 143226
 386/bin/rdbfs - 775 sys sys 1125346008 168500
 386/bin/read - 775 sys sys 1115950106 58046
@@ -12666,7 +12666,7 @@ sys/src/cmd/ql/optab.c - 664 sys sys 1089299167 13392
 sys/src/cmd/ql/pass.c - 664 sys sys 1089299168 11868
 sys/src/cmd/ql/sched.c - 664 sys sys 1089299166 12776
 sys/src/cmd/ql/span.c - 664 sys sys 1089299167 19882
-sys/src/cmd/ramfs.c - 664 sys sys 1109607491 15506
+sys/src/cmd/ramfs.c - 664 sys sys 1126005899 15927
 sys/src/cmd/ratfs - 20000000775 sys sys 1016943965 0
 sys/src/cmd/ratfs/ctlfiles.c - 664 sys sys 1016943964 6694
 sys/src/cmd/ratfs/main.c - 664 sys sys 1016943964 6516
@@ -12807,7 +12807,7 @@ sys/src/cmd/seq.c - 664 sys sys 1125529033 1683
 sys/src/cmd/sh.C - 664 sys sys 1055701754 10303
 sys/src/cmd/sha1sum.c - 664 sys sys 1014926229 1017
 sys/src/cmd/size.c - 664 sys sys 944961619 717
-sys/src/cmd/sleep.c - 664 sys sys 944961351 170
+sys/src/cmd/sleep.c - 664 sys sys 1126031186 170
 sys/src/cmd/snap - 20000000775 sys sys 951229639 0
 sys/src/cmd/snap/mkfile - 664 sys sys 1023834477 257
 sys/src/cmd/snap/read.c - 664 sys sys 1023834478 3512

+ 9 - 0
dist/replica/plan9.log

@@ -21237,3 +21237,12 @@
 1125919884 3 c sys/src/games/sokoban/sokoban.c - 664 sys sys 1125919542 6358
 1125919884 4 c sys/src/games/sokoban/sokoban.h - 664 sys sys 1125919542 2062
 1125977498 0 c sys/src/games/sokoban/mkfile - 664 sys sys 1125976294 261
+1126006305 0 c 386/9pc.gz - 664 sys sys 1126005796 645747
+1126006305 1 c 386/9pccpu.gz - 664 sys sys 1126005799 530959
+1126006305 2 c 386/9pcdisk.gz - 664 sys sys 1126005804 736406
+1126006305 3 c 386/9pcf.gz - 664 sys sys 1126005809 888685
+1126006305 4 c 386/bin/ramfs - 775 sys sys 1126005943 89803
+1126006305 5 c sys/src/cmd/ramfs.c - 664 sys sys 1126005899 15927
+1126031509 0 c sys/src/cmd/sleep.c - 664 sys sys 1126031186 170
+1126063917 0 c 386/bin/games/sokoban - 775 sys sys 1126062686 164713
+1126063917 1 c 386/bin/ramfs - 775 sys sys 1126062687 89789

+ 24 - 3
sys/src/cmd/ramfs.c

@@ -88,6 +88,22 @@ char	*rflush(Fid*), *rversion(Fid*), *rauth(Fid*),
 	*rread(Fid*), *rwrite(Fid*), *rclunk(Fid*),
 	*rremove(Fid*), *rstat(Fid*), *rwstat(Fid*);
 
+int needfid[] = {
+	[Tversion] 0,
+	[Tflush] 0,
+	[Tauth] 0,
+	[Tattach] 0,
+	[Twalk] 1,
+	[Topen] 1,
+	[Tcreate] 1,
+	[Tread] 1,
+	[Twrite] 1,
+	[Tclunk] 1,
+	[Tremove] 1,
+	[Tstat] 1,
+	[Twstat] 1,
+};
+
 char 	*(*fcalls[])(Fid*) = {
 	[Tversion]	rversion,
 	[Tflush]	rflush,
@@ -177,7 +193,7 @@ main(int argc, char *argv[])
 		if(defmnt == 0){
 			char buf[64];
 			snprint(buf, sizeof buf, "#s/%s", service);
-			fd = create(buf, OWRITE, 0666);
+			fd = create(buf, OWRITE|ORCLOSE, 0666);
 			if(fd < 0)
 				error("create failed");
 			sprint(buf, "%d", p[1]);
@@ -351,6 +367,8 @@ rwalk(Fid *f)
 		f->busy = 0;
 		f->ram = nil;
 	}
+	if(rhdr.nwqid > 0)
+		err = nil;	/* didn't get everything in 9P2000 right! */
 	if(rhdr.nwqid == thdr.nwname)	/* update the fid after a successful walk */
 		f->ram = fram;
 	return err;
@@ -747,6 +765,7 @@ io(void)
 {
 	char *err, buf[40];
 	int n, pid, ctl;
+	Fid *fid;
 
 	pid = getpid();
 	if(private){
@@ -787,10 +806,12 @@ io(void)
 		if(debug)
 			fprint(2, "ramfs %d:<-%F\n", pid, &thdr);
 
-		if(!fcalls[thdr.type])
+		if(thdr.type<0 || thdr.type>=nelem(fcalls) || !fcalls[thdr.type])
 			err = "bad fcall type";
+		else if(((fid=newfid(thdr.fid))==nil || !fid->ram) && needfid[thdr.type])
+			err = "fid not in use";
 		else
-			err = (*fcalls[thdr.type])(newfid(thdr.fid));
+			err = (*fcalls[thdr.type])(fid);
 		if(err){
 			rhdr.type = Rerror;
 			rhdr.ename = err;